diff --git a/.gitignore b/.gitignore index daf9953..6083849 100644 --- a/.gitignore +++ b/.gitignore @@ -1,262 +1,12 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -*.msi -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -#*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file +*.pyc +python-server/__pycache__ +python-server/build +python-server/dist + +# latex files +*.aux +*.log +*.synctex.gz +*.toc +*.dvi +*.ps diff --git a/CVERT-ng/.editorconfig b/CVERT-ng/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/CVERT-ng/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/CVERT-ng/.gitignore b/CVERT-ng/.gitignore new file mode 100644 index 0000000..6966fde --- /dev/null +++ b/CVERT-ng/.gitignore @@ -0,0 +1,51 @@ +# compiled output +**/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +/releases +!/dist/icon.ico +!/dist/icon.png +# !/dist/background.png +# !/dist/background@2x.png +# !/dist/icon.icns diff --git a/CVERT-ng/angular.json b/CVERT-ng/angular.json new file mode 100644 index 0000000..8e685a8 --- /dev/null +++ b/CVERT-ng/angular.json @@ -0,0 +1,140 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "CVERT-ng": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/CVERT-ng", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [], + "es5BrowserSupport": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "CVERT-ng:build" + }, + "configurations": { + "production": { + "browserTarget": "CVERT-ng:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "CVERT-ng:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.scss" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "CVERT-ng-e2e": { + "root": "e2e/", + "projectType": "application", + "prefix": "", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "CVERT-ng:serve" + }, + "configurations": { + "production": { + "devServerTarget": "CVERT-ng:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "CVERT-ng" +} diff --git a/CVERT-ng/browserslist b/CVERT-ng/browserslist new file mode 100644 index 0000000..37371cb --- /dev/null +++ b/CVERT-ng/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/CVERT-ng/e2e/protractor.conf.js b/CVERT-ng/e2e/protractor.conf.js new file mode 100644 index 0000000..86776a3 --- /dev/null +++ b/CVERT-ng/e2e/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/CVERT-ng/e2e/src/app.e2e-spec.ts b/CVERT-ng/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..3ffd278 --- /dev/null +++ b/CVERT-ng/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('Welcome to CVERT-ng!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/CVERT-ng/e2e/src/app.po.ts b/CVERT-ng/e2e/src/app.po.ts new file mode 100644 index 0000000..5776aa9 --- /dev/null +++ b/CVERT-ng/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root h1')).getText() as Promise; + } +} diff --git a/CVERT-ng/e2e/tsconfig.e2e.json b/CVERT-ng/e2e/tsconfig.e2e.json new file mode 100644 index 0000000..a6dd622 --- /dev/null +++ b/CVERT-ng/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/CVERT-ng/electron/main.ts b/CVERT-ng/electron/main.ts new file mode 100644 index 0000000..482ff1b --- /dev/null +++ b/CVERT-ng/electron/main.ts @@ -0,0 +1,281 @@ +import { app, BrowserWindow, dialog, ipcMain, Menu } from 'electron'; +import * as path from 'path'; +import * as url from 'url'; +import * as fs from 'fs'; + +import * as exifr from 'exifr'; +var parser = require('fast-xml-parser'); +var child_process = require('child_process'); + +let win: BrowserWindow; +let paramWin: BrowserWindow; + +let algorithmParameters: any; +let pythonProcess: any; + +app.on('ready', createWindow); + +app.on('activate', () => { + if (win === null) { + createWindow(); + } +}); + +// mains process +function createWindow() { + win = new BrowserWindow({ + /*width: 1680, + height: 760,*/ + webPreferences: { + nodeIntegration: true // for nodeJS integration + } + }); + win.loadURL( + url.format({ + pathname: path.join(__dirname, `/../../dist/CVERT-ng/index.html`), + protocol: 'file:', + slashes: true, + }) + ); + win.maximize(); + // win.webContents.openDevTools(); // to hide in prod + Menu.setApplicationMenu(null); + + readAlgorithmParameters(); + pythonProcess = launchPythonServer(); + + win.on('closed', () => { + try { + pythonProcess.kill('SIGINT'); + } catch(err) { + console.log(err); + } + win = null; + }); +} + +function isCompiled() { + return (__dirname.includes('asar')); +} + +function launchPythonServer() { + if (isCompiled()) { // Electron-compiled app + var platform = process.platform; + console.log('Launching server executable on platform ' + platform); + var executablePath = getExecutablePath(); + if (executablePath != '') { + try { + var pythonServer = child_process.execFile(executablePath); + } catch(error) { + console.log(error); + } + } + } else { // uncompiled app : launch python file + var pythonPath = getPythonPath(); + console.log('Launching Python server from py file'); + switch(process.platform) { + case 'linux': + var python = 'python3'; + break; + case 'win32': + var python = 'python'; + break; + default: + console.log('unsupported OS'); + break; + } + try { + var pythonServer = child_process.spawn(python, [pythonPath]); + } catch(error) { + console.log(error); + } + } + + if (pythonServer == null) { + console.log('failed to launch server'); + } + + return pythonServer; +} + +// get executable file path for execution, depending on OS +function getExecutablePath() { + var executablePath = ''; + switch(process.platform) { + case 'win32': + executablePath = path.join(process.resourcesPath, 'serverExecutables', 'server.exe'); + break; + case 'linux': + executablePath = path.join(process.resourcesPath, 'serverExecutables', 'server'); + break; + /*case 'darwin': + executablePath = path.join(process.resourcesPath, 'serverExecutables', 'server'); // need to find extension + break;*/ + default: + break; + } + return executablePath; +} + +// get Python file path for execution +function getPythonPath() { + return path.join(__dirname, '../../../python-server/server.py'); +} + +function readAlgorithmParameters() { + algorithmParameters = JSON.parse(fs.readFileSync(getAssetsPath()).toString()).algorithmParameters; +} + +function getAssetsPath() { + if (isCompiled()) { + return path.join(process.resourcesPath, 'assets', 'algorithmParameters.json'); + } else { + return path.join(__dirname, `/../../dist/CVERT-ng/assets/algorithmParameters.json`); + } +} + +// IPC functions + +//parameters window +ipcMain.on('openAlgorithmParametersWindow', (event) => { + + paramWin = new BrowserWindow({ + width: 900, + height: 600, + center: true, + resizable: true, + frame: true, + transparent: false, + webPreferences: { + nodeIntegration: true // for nodeJS integration + } + }); + + var urlToNav = url.format({ + pathname: path.join(__dirname, `/../../dist/CVERT-ng/index.html`), + protocol: 'file:', + slashes: true, + }) + urlToNav = urlToNav + '#/parameters'; + paramWin.loadURL(urlToNav); + // paramWin.webContents.openDevTools(); // to hide in prod + paramWin.removeMenu(); +}) + +ipcMain.on('readAlgorithmParameters', (event, window) => { + if (window == 'win') { + win.webContents.send('readAlgorithmParametersResponse', algorithmParameters); + } else if (window == 'paramWin') { + paramWin.webContents.send('readAlgorithmParametersResponse', algorithmParameters); + } +}) + +//save algorithm parameters to assets.json +ipcMain.on('saveAlgorithmParameters', (event, newAlgorithmParameters) => { + algorithmParameters = newAlgorithmParameters; + console.log('Saved Algorithm Parameters'); +}) + +//file save +ipcMain.on('saveFile', (event, base64Data: string, mime: string) => { + var mimeList = mime.split("/"); + var filename = "output." + mimeList[1]; + var reg = '^data:' + mimeList[0] + '\\/' + mimeList[1] + ';base64,'; + var regex = new RegExp(reg); + base64Data = base64Data.replace(regex, ""); + dialog.showSaveDialog({defaultPath: filename}).then((result) => { + if (!result.canceled && result.filePath != undefined) { + fs.writeFile(result.filePath, base64Data, 'base64', (err) => { + if (err) throw err; + console.log('file saved'); + }); + } else { + console.log('file save canceled'); + } + }); + // win.webContents.send('saveFileResponse', "saved !"); +}) + +//file save without dialog +ipcMain.on('saveFileToPath', (event, base64Data: string, mime: string, path: string) => { + var mimeList = mime.split("/"); + var reg = '^data:' + mimeList[0] + '\\/' + mimeList[1] + ';base64,'; + var regex = new RegExp(reg); + base64Data = base64Data.replace(regex, ""); + fs.writeFile(path, base64Data, 'base64', (err) => { + if (err) throw err; + console.log('file saved'); + }) +}) + +//GIS data get +ipcMain.on('getGISdata', (event, path: string) => { + if (fs.lstatSync(path).isFile()) { + fs.readFile(path, (err, data) => { + exifr.parse(data, {'xmp': true}).then(exif => { + var xmpData = {}; + try { + xmpData = getXMPfromExif(exif.xmp); + } catch(err) { + console.log('no XMP data found'); + } + win.webContents.send('getGISdataResponse', exif, xmpData); + }) + }) + } +}) + +//check if path exists +ipcMain.on('pathExists', (event, path: string) => { + win.webContents.send('pathExistsResponse', fs.lstatSync(path).isFile()); +}) + +//get input directory +ipcMain.on('getInputFiles', (event) => { + dialog.showOpenDialog({ + properties: ['openFile', 'multiSelections'], + filters: [{ name: 'Images', + extensions: ['jpg', 'png', 'gif'] + }] + }).then((result) => { + if (!result.canceled && result.filePaths != undefined) { + win.webContents.send('getInputFilesResponse', result.filePaths); + } else { + win.webContents.send('getInputFilesResponse', []); + } + }); +}) + +//get output directory +ipcMain.on('getOutputDirectory', (event) => { + dialog.showOpenDialog({properties: ['openDirectory']}).then((result) => { + if (!result.canceled && result.filePaths != undefined) { + win.webContents.send('getOutputDirectoryResponse', result.filePaths[0]); + } else { + win.webContents.send('getOutputDirectoryResponse', ''); + } + }); +}) + +// XMP getter from file Exif +function getXMPfromExif(exif: string) { + var gisData = {}; + var dom = parser.parse(exif, {ignoreAttributes: false}); + var dji_xmp = dom['x:xmpmeta']['rdf:RDF']['rdf:Description']; + if (dji_xmp['@_rdf:about'] == "DJI Meta Data") { + console.log("found DJI Meta Data"); + for (const [xmpKey, xmpValue] of Object.entries(dji_xmp)) { + if (xmpKey.includes("@_drone-dji:")) { + var key = xmpKey; + key = key.replace("@_drone-dji:",""); + var numberValue = Number(xmpValue); + if (!isNaN(numberValue)) { + gisData[key] = numberValue; + } else { + gisData[key] = xmpValue; + } + } + } + } + return gisData; +} diff --git a/CVERT-ng/electron/tsconfig.json b/CVERT-ng/electron/tsconfig.json new file mode 100644 index 0000000..6ea36b9 --- /dev/null +++ b/CVERT-ng/electron/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist", + "sourceMap": true, + "declaration": false, + "module": "commonjs", + "moduleResolution": "node", + "resolveJsonModule": true, + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/CVERT-ng/package-lock.json b/CVERT-ng/package-lock.json new file mode 100644 index 0000000..b2c83b5 --- /dev/null +++ b/CVERT-ng/package-lock.json @@ -0,0 +1,16117 @@ +{ + "name": "cvert-ng", + "version": "0.0.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "7zip-bin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz", + "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==", + "dev": true + }, + "@angular-devkit/architect": { + "version": "0.803.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.18.tgz", + "integrity": "sha512-/oNutcuUduXH/4nxHSDRTYK3VGP0PkVUniPdo0yjpg8c2dbfoNkt1ILIV82LPaC8sDwjuXGLx0EH70ETtcnBwg==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.18", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.25.tgz", + "integrity": "sha512-WY0E7NgXuog3phhz5ZdutZPWQ9nbOr+omGN5KI1e8MZs1sJO4xkyaGRT8zOulkogkqJ2NboTBq3j9uSbZkcYeg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.803.25", + "@angular-devkit/build-optimizer": "0.803.25", + "@angular-devkit/build-webpack": "0.803.25", + "@angular-devkit/core": "8.3.25", + "@babel/core": "7.8.3", + "@babel/preset-env": "7.8.3", + "@ngtools/webpack": "8.3.25", + "ajv": "6.10.2", + "autoprefixer": "9.6.1", + "browserslist": "4.8.6", + "cacache": "12.0.2", + "caniuse-lite": "1.0.30001024", + "circular-dependency-plugin": "5.2.0", + "clean-css": "4.2.1", + "copy-webpack-plugin": "5.1.1", + "core-js": "3.6.4", + "coverage-istanbul-loader": "2.0.3", + "file-loader": "4.2.0", + "find-cache-dir": "3.0.0", + "glob": "7.1.4", + "jest-worker": "24.9.0", + "karma-source-map-support": "1.4.0", + "less": "3.9.0", + "less-loader": "5.0.0", + "license-webpack-plugin": "2.1.2", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.8.0", + "minimatch": "3.0.4", + "open": "6.4.0", + "parse5": "4.0.0", + "postcss": "7.0.17", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "3.1.0", + "regenerator-runtime": "0.13.3", + "rxjs": "6.4.0", + "sass": "1.22.9", + "sass-loader": "7.2.0", + "semver": "6.3.0", + "source-map": "0.7.3", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.13", + "speed-measure-webpack-plugin": "1.3.1", + "style-loader": "1.0.0", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser": "4.6.3", + "terser-webpack-plugin": "1.4.3", + "tree-kill": "1.2.2", + "webpack": "4.39.2", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.9.0", + "webpack-merge": "4.2.1", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.1.0-rc.6", + "worker-plugin": "3.2.0" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.25.tgz", + "integrity": "sha512-usV/zEncKCKQuF6AD3pRU6N5i5fbaAux/qZb+nbOz9/2G5jrXwe5sH+y3vxbgqB83e3LqusEQCTu7/tfg6LwZg==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.25", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.25.tgz", + "integrity": "sha512-l7Gqy1tMrTpRmPVlovcFX8UA3mtXRlgO8kcSsbJ9MKRKNTCcxlfsWEYY5igyDBUVh6ADkgSIu0nuk31ZGTe0lw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.25.tgz", + "integrity": "sha512-MiQimuEs8QeM3xo7bR3Yk1OWHHlp2pGCc2GLUMIcWhKqM+QjoRky0HoGoBazbznx292l+xjFjANvPEKbqJ2v7Q==", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.7.3", + "tslib": "1.10.0", + "typescript": "3.5.3", + "webpack-sources": "1.4.3" + } + }, + "@angular-devkit/build-webpack": { + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.25.tgz", + "integrity": "sha512-WR7HWJIWL6TB3WHG7ZFn8s0z3WlojeQlod75UIKl5i+f4OU90kp8kxcoH5G6OCXu56x5w40oIi1ve5ljjWSJkw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.803.25", + "@angular-devkit/core": "8.3.25", + "rxjs": "6.4.0" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.25.tgz", + "integrity": "sha512-usV/zEncKCKQuF6AD3pRU6N5i5fbaAux/qZb+nbOz9/2G5jrXwe5sH+y3vxbgqB83e3LqusEQCTu7/tfg6LwZg==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.25", + "rxjs": "6.4.0" + } + }, + "@angular-devkit/core": { + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.25.tgz", + "integrity": "sha512-l7Gqy1tMrTpRmPVlovcFX8UA3mtXRlgO8kcSsbJ9MKRKNTCcxlfsWEYY5igyDBUVh6ADkgSIu0nuk31ZGTe0lw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.18.tgz", + "integrity": "sha512-SPlQmBlrcaKZeE9srvuFElcen9iOled4lkD3M4cGwe56u6YoJ71oTAtmGiw9nofTtW0PghGVq8WdDQG5BRqX8Q==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.18.tgz", + "integrity": "sha512-J9sf/6cSUx2kdXppo/69uZ1gBeM5fcXfnP7MCJCVnsk09QCD9Kr+Xeh8h4WEmLtne7XzI9dcCttHQ5WDNuRulA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.18", + "rxjs": "6.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/animations": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.13.tgz", + "integrity": "sha512-ZE4UZsQ6HDW1ZIj9tL45PVosCcG4Ke7ihV7eWCE1VgLZKDDxTOPbLf1UeEiszUYptMLGH3eGMNBKo85mOlkH8w==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cdk": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-8.2.3.tgz", + "integrity": "sha512-ZwO5Sn720RA2YvBqud0JAHkZXjmjxM0yNzCO8RVtRE9i8Gl26Wk0j0nQeJkVm4zwv2QO8MwbKUKGTMt8evsokA==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^1.7.1" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + } + } + }, + "@angular/cli": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.18.tgz", + "integrity": "sha512-IWiGlAmVPkl/xWCrki3N45uqdYcjUvtWw9bRM53FF1EKLLbjue6DAVD1HktqgqjTyck0P7QkOXWRilT8rXKcEQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.803.18", + "@angular-devkit/core": "8.3.18", + "@angular-devkit/schematics": "8.3.18", + "@schematics/angular": "8.3.18", + "@schematics/update": "0.803.18", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "6.5.1", + "npm-package-arg": "6.1.0", + "npm-pick-manifest": "3.0.2", + "open": "6.4.0", + "pacote": "9.5.5", + "read-package-tree": "5.3.1", + "rimraf": "3.0.0", + "semver": "6.3.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@angular/common": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.13.tgz", + "integrity": "sha512-I9cTcjUi88L+Mb/a/ZzUrdDcn3YgFFK9LubxaPjAfr6+G7IZ//MY5HuvG8Y41yKprXVVvQCbQ1yQD+GGRSCkaA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.13.tgz", + "integrity": "sha512-u2NWCvEn4SjbMvn2PG6sYcf+rR5u3aYMv3/mNQ9k+2UmCIu3yJrcuCzebjo5SdlDVqKD2vzbyMZnr8VB9OcceQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.2.13.tgz", + "integrity": "sha512-ryW2Kozx/oHJrtdeIhgZ24RIU7Za3YIOHS9EMCQ8xMo+ZlSI+t2zOlLAXzK4PVWEjuTtQlKbT0KqilgU0QsHJg==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", + "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.13.tgz", + "integrity": "sha512-W8HN0lUQV4Sq85l17nhRIXeIfcw1ZdpgGm6to98pl0y9l/1srfzWfTnofuwCJC7gedt5AMrYJGUaNiDbByosFw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.13.tgz", + "integrity": "sha512-l7lHD4kbWK70KY0Xp4IpSa106ZzSgPMwRYMFKd9qhYaJ7v0Y7Shh7Z/ZDCOP730maj9WULnpy5X4eeozWXgvgg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-8.2.13.tgz", + "integrity": "sha512-uVkqC5oxul6Jqyxzy0o4DN1TpmcmUWIi7WnDBu+aJVQFp/kqxmkNuJQvugdouxlIYdHC/SwLeVnBIplRjGH5cw==", + "dev": true + }, + "@angular/material": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-8.2.3.tgz", + "integrity": "sha512-SOczkIaqes+r+9XF/UUiokidfFKBpHkOPIaFK857sFD0FBNPvPEpOr5oHKCG3feERRwAFqHS7Wo2ohVEWypb5A==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@angular/platform-browser": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.13.tgz", + "integrity": "sha512-1lPbeLQIbbafjq9ul3IA8s2fMJ/EXeMJ74ouTolVXoPPur9ZPRLX9FqBAO1K4QzkAWhRlyf6qIC+mDZfJILwZw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.13.tgz", + "integrity": "sha512-KP5psUKujAO8jZKHi6LRC+N7hE/epiGOhYZxdher1sCi81sYoZmqrEWkVZ4VKhov/4aC409CocDXcF7nmHV8tg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "8.2.13", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.13.tgz", + "integrity": "sha512-9CqnachtdASnEmRMtrG/R3c5nDCjjlCU4n0W/xt5+LlveyuUVvAT/CFUC38km4Df3lIvqap8mSpxzGaEzCL+wQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/compat-data": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.6.tgz", + "integrity": "sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", + "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-call-delegate": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", + "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.6.tgz", + "integrity": "sha512-UrJdk27hKVJSnibFcUWYLkCL0ZywTUoot8yii1lsHJcvwrypagmYKjHLMWivQPm4s6GdyygCL8fiH5EYLxhQwQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.6", + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz", + "integrity": "sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.6.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz", + "integrity": "sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.8.6", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", + "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", + "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz", + "integrity": "sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", + "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz", + "integrity": "sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", + "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", + "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", + "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", + "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz", + "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.8.3", + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", + "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz", + "integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.0", + "@babel/helper-compilation-targets": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.8.3", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.8.3", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-commonjs": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.8.3", + "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.3", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.3", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.3", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/types": "^7.8.3", + "browserslist": "^4.8.2", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.0", + "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@develar/schema-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.1.0.tgz", + "integrity": "sha512-qjCqB4ctMig9Gz5bd6lkdFr3bO6arOdQqptdBSpF1ZpCnjofieCciEzkoS9ujY9cMGyllYSCSmBJ3x9OKHXzoA==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "@electron/get": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.6.0.tgz", + "integrity": "sha512-xuvAzbN9iBApfAMvW0hKUpxHR5wPVbG9RaoSTbpu/WaHISDu0MVfMWYhfeU0X730CpBV0G2RkLgwAs9WDan3GA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "sanitize-filename": "^1.6.2", + "sumchecker": "^3.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jimp/bmp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.8.4.tgz", + "integrity": "sha512-Cf/V+SUyEVxCCP8q1emkarCHJ8NkLFcLp41VMqBihoR4ke0TIPfCSdgW/JXbM/28vvZ5a2bvMe6uOll6cFggvA==", + "requires": { + "@jimp/utils": "^0.8.4", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/core": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.8.4.tgz", + "integrity": "sha512-3fK5UEOEQsfSDhsrAgBT6W8Up51qkeCj9RVjusxUaEGmix34PO/KTVfzURlu6NOpOUvtfNXsCq9xS7cxBTWSCA==", + "requires": { + "@jimp/utils": "^0.8.4", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "buffer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/custom": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.8.4.tgz", + "integrity": "sha512-iS/RB3QQKpm4QS8lxxtQzvYDMph9YvOn3d68gMM4pDKn95n3nt5/ySHFv6fQq/yzfox1OPdeYaXbOLvC3+ofqw==", + "requires": { + "@jimp/core": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/gif": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.8.4.tgz", + "integrity": "sha512-YpHZ7aWzmrviY7YigXRolHs6oBhGJItRry8fh3zebAgKth06GMv58ce84yXXOKX4yQ+QGd6GgOWzePx+KMP9TA==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/jpeg": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.8.4.tgz", + "integrity": "sha512-7exKk3LNPKJgsFzUPL+mOJtIEHcLp6yU9sVbULffVDjVUun6/Are2tCX8rCXZq28yiUhofzr61k5UqjkKFJXrA==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-blit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.8.4.tgz", + "integrity": "sha512-H9bpetmOUgEHpkDSRzbXLMXQhr34i8YicYV3EDeuHU8mKlAjtMbVpbp5ZN4mcadTz+EYdTdVNfQNsRCcIb5Oeg==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-blur": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.8.4.tgz", + "integrity": "sha512-gvEDWW7+MI9Hk1KKzuFliRdDPaofkxB4pRJ/n1hipDoOGcNYFqxx5FGNQ4wsGSDpQ+RiHZF+JGKKb+EIwHg+0Q==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-color": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.8.4.tgz", + "integrity": "sha512-DHCGMxInCI1coXMIfdZJ5G/4hpt5yZLNB5+oUIxT4aClzyhUjqD4xOcnO7hlPY6LuX8+FX7cYMHhdMfhTXB3Dg==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-contain": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.8.4.tgz", + "integrity": "sha512-3wwLXig5LkOMg5FrNZrX/r99ehaA+0s3dkro3CiRg0Ez6Y0fz067so+HdsmqmoG78WY/dCdgdps/xLOW2VV4DQ==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-cover": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.8.4.tgz", + "integrity": "sha512-U0xmSfGLmw0Ieiw00CM8DQ+XoQVBxbjsLE5To8EejnyLx5X+oNZ8r7E5EsQaushUlzij95IqMCloo+nCGhdYMw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-crop": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.8.4.tgz", + "integrity": "sha512-Neqs0K4cr7SU9nSte2qvGVh/8+K9ArH8mH1fWhZw4Zq8qD9NicX+g5hqmpmeSjOKD73t/jOmwvBevfJDu2KKSA==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-displace": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.8.4.tgz", + "integrity": "sha512-qKCwAP2lAO3R8ofYaEF/Gh+sfcjzZLtEiYHzjx/mYvPpXS6Yvkvl28aUH8pwdJYT+QYGelHmOne0RJvjsac1NQ==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-dither": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.8.4.tgz", + "integrity": "sha512-19+y5VAO6d0keRne9eJCdOeB9X0LFuRdRSjgwl/57JtREeoPj+iKBg6REBl4atiSGd7/UCFg3wRtFOw24XFKgw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-flip": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.8.4.tgz", + "integrity": "sha512-1BtKtc8cANuGgiWyOmltQZaR3Y5Og/GS/db8wBpFNLJ33Ir5UAGN2raDtx4EYEd5okuRVFj3OP+wAZl69m72LQ==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-gaussian": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.8.4.tgz", + "integrity": "sha512-qYcVmiJn8l8uDZqk4FlB/qTV8fJgiJAh/xc/WKNEp2E8qFEgxoIPeimPHO8cJorEHqlh8I8l24OZkTkkEKaFfw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-invert": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.8.4.tgz", + "integrity": "sha512-OQ/dFDbBUmEd935Gitl5Pmgz+nLVyszwS0RqL6+G1U9EHYBeiHDrmY2sj7NgDjDEJYlRLxGlBRsTIPHzF3tdNw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-mask": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.8.4.tgz", + "integrity": "sha512-uqLdRGShHwCd9RHv8bMntTfDNDI2pcEeE7+F868P6PngWLKrzQCpuAyTnK6WK0ZN95fSsgy7TzCoesYk+FchkQ==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-normalize": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.8.4.tgz", + "integrity": "sha512-+ihgQeVD8syWxw12F5ngUUdtlIcGDqH7hEoHcwVVGOFfaJqR4YBQR4FM3QLFFFdi2X/uK2nGJt9cMh0UaINEgw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-print": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.8.4.tgz", + "integrity": "sha512-Wg5tZI3hW5DG9Caz4wg4ZolS3Lvv4MFAxORPAeWeahDpHs38XZ7ydJ0KR39p2oWJPP0yIFv1fETYpU7BiJPRRw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-resize": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.8.4.tgz", + "integrity": "sha512-z9tumvsQja/YFTSeGvofYLvVws8LZYLYVW8l17hBETzfZQdVEvPOdWKkXqsAsK5uY9m8M5rH7kR8NZbCDVbyzA==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-rotate": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.8.4.tgz", + "integrity": "sha512-PVxpt3DjqaUnHP6Nd3tzZjl4SYe/FYXszGTshtx51AMuvZLnpvekrrclYyc7Dc1Ry3kx3ma6UuLCvmf85hrdmw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugin-scale": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.8.4.tgz", + "integrity": "sha512-PrBTOMJ5n4gbIvRNxWfc1MdgHw4vd5r1UOHRVuc6ZQ9Z/FueBuvIidnz7GBRHbsRm3IjckvsLfEL1nIK0Kqh3A==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/plugins": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.8.4.tgz", + "integrity": "sha512-Vd0oCe0bj7c+crHL6ee178q2c1o50UnbCmc0imHYg7M+pY8S1kl4ubZWwkAg2W96FCarGrm9eqPvCUyAdFOi9w==", + "requires": { + "@jimp/plugin-blit": "^0.8.4", + "@jimp/plugin-blur": "^0.8.4", + "@jimp/plugin-color": "^0.8.4", + "@jimp/plugin-contain": "^0.8.4", + "@jimp/plugin-cover": "^0.8.4", + "@jimp/plugin-crop": "^0.8.4", + "@jimp/plugin-displace": "^0.8.4", + "@jimp/plugin-dither": "^0.8.4", + "@jimp/plugin-flip": "^0.8.4", + "@jimp/plugin-gaussian": "^0.8.4", + "@jimp/plugin-invert": "^0.8.4", + "@jimp/plugin-mask": "^0.8.4", + "@jimp/plugin-normalize": "^0.8.4", + "@jimp/plugin-print": "^0.8.4", + "@jimp/plugin-resize": "^0.8.4", + "@jimp/plugin-rotate": "^0.8.4", + "@jimp/plugin-scale": "^0.8.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/png": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.8.4.tgz", + "integrity": "sha512-DLj260SwQr9ZNhSto1BacXGNRhIQiLNOESPoq5DGjbqiPCmYNxE7CPlXB1BVh0T3AmZBjnZkZORU0Y9wTi3gJw==", + "requires": { + "@jimp/utils": "^0.8.4", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/tiff": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.8.4.tgz", + "integrity": "sha512-SQmf1B/TbCtbwzJReLw/lzGqbeu8MOfT+wkaia0XWS72H6bEW66PTQKhB4/3uzC/Xnmsep1WNQITlwcWdgc36Q==", + "requires": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/types": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.8.4.tgz", + "integrity": "sha512-BCehQ5hrTOGDGdeROwXOYqgFGAzJPkuXmVJXgMgBoW1YjoGWhXJ5iShaJ/l7DRErrdezoWUdAhTFlV5bJf51dg==", + "requires": { + "@jimp/bmp": "^0.8.4", + "@jimp/gif": "^0.8.4", + "@jimp/jpeg": "^0.8.4", + "@jimp/png": "^0.8.4", + "@jimp/tiff": "^0.8.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@jimp/utils": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.8.4.tgz", + "integrity": "sha512-6Cwplao7IgwhFRijMvvyjdV7Sa7Fw71vS1aDsUDCVpi3XHsiLUM+nPTno6OKjzg2z2EufuolWPEvuq/GSte4lA==", + "requires": { + "core-js": "^2.5.7" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + } + } + }, + "@ngtools/webpack": { + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.25.tgz", + "integrity": "sha512-yHvgxXUXlgdWijtzcRjTaUqzK+6TVK/8p7PreBR00GsLxhl4U1jQSC6yDaZUCjOaEkiczFWl4hEuC4wTU/hLdg==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.25", + "enhanced-resolve": "4.1.0", + "rxjs": "6.4.0", + "tree-kill": "1.2.2", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.25.tgz", + "integrity": "sha512-l7Gqy1tMrTpRmPVlovcFX8UA3mtXRlgO8kcSsbJ9MKRKNTCcxlfsWEYY5igyDBUVh6ADkgSIu0nuk31ZGTe0lw==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.3", + "rxjs": "6.4.0", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@schematics/angular": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.18.tgz", + "integrity": "sha512-3cQYcmzsWD/MnqauoSozIu1R7DJvty13BH6+XIorEfguWqOwOwgNIWLMsa0iIcy0+TV3vWFI0KZpCKup2u/I1Q==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.18", + "@angular-devkit/schematics": "8.3.18" + } + }, + "@schematics/update": { + "version": "0.803.18", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.18.tgz", + "integrity": "sha512-vJxyL1pbn2lcgSH6HUqgA373iJRXQWxdrxuUaQ56qyq1EoicG7EppKz7OlGyKs+nHR9HhtK0eJc35E7I0lEWgA==", + "dev": true, + "requires": { + "@angular-devkit/core": "8.3.18", + "@angular-devkit/schematics": "8.3.18", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.5.5", + "rxjs": "6.4.0", + "semver": "6.3.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/debug": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", + "dev": true + }, + "@types/electron": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@types/electron/-/electron-1.6.10.tgz", + "integrity": "sha512-MOCVyzIwkBEloreoCVrTV108vSf8fFIJPsGruLCoAoBZdxtnJUqKA4lNonf/2u1twSjAspPEfmEheC+TLm/cMw==", + "dev": true, + "requires": { + "electron": "*" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.4.6.tgz", + "integrity": "sha512-hpQHs+lmZ0uuCrGyqypdI1Ho7jRFolOBT6OkNdZPFziLSSEKvWu+VxWU6bGdNEA/hoV4jV8pdDeNx8EWlmfNAw==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.7.tgz", + "integrity": "sha512-pKeZFRn4vQyd8Px9FK6ww3frKiAYPgpKzBayWHd9SOzGjty6aXPsuFvxgRr866KLP1h7Cnd1z3XrhGX17WqO2g==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", + "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", + "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webgl2": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.5.tgz", + "integrity": "sha512-oGaKsBbxQOY5+aJFV3KECDhGaXt+yZJt2y/OZsnQGLRkH6Fvr7rv4pCt3SRH1somIHfej/c4u7NSpCyd9x+1Ow==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz", + "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "dev": true, + "requires": { + "type-fest": "^0.5.2" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-builder-bin": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz", + "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==", + "dev": true + }, + "app-builder-lib": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz", + "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@develar/schema-utils": "~2.1.0", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "21.2.0", + "builder-util-runtime": "8.3.0", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.1.1", + "ejs": "^2.6.2", + "electron-publish": "21.2.0", + "fs-extra": "^8.1.0", + "hosted-git-info": "^2.7.1", + "is-ci": "^2.0.0", + "isbinaryfile": "^4.0.2", + "js-yaml": "^3.13.1", + "lazy-val": "^1.0.4", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.5.0", + "read-config-file": "5.0.0", + "sanitize-filename": "^1.6.2", + "semver": "^6.3.0", + "temp-file": "^3.3.4" + }, + "dependencies": { + "isbinaryfile": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.2.tgz", + "integrity": "sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arg": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz", + "integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", + "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "dev": true, + "requires": { + "browserslist": "^4.6.3", + "caniuse-lite": "^1.0.30000980", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.17", + "postcss-value-parser": "^4.0.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolean": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-2.0.3.tgz", + "integrity": "sha512-iHzXeFCXWrpjYE7DToXGCBPGZf0eVISqzL+4sgrOSYEKXnb59WHPFvGTTyCj6zJ/MuuLAxEn8zPkrTHHzlt3IA==", + "dev": true, + "optional": true + }, + "bootstrap": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" + }, + "boxen": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", + "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^2.4.2", + "cli-boxes": "^2.2.0", + "string-width": "^3.0.0", + "term-size": "^1.2.0", + "type-fest": "^0.3.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", + "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001023", + "electron-to-chromium": "^1.3.341", + "node-releases": "^1.1.47" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", + "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builder-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz", + "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==", + "dev": true, + "requires": { + "7zip-bin": "~5.0.3", + "@types/debug": "^4.1.4", + "app-builder-bin": "3.4.3", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.3.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "fs-extra": "^8.1.0", + "is-ci": "^2.0.0", + "js-yaml": "^3.13.1", + "source-map-support": "^0.5.13", + "stat-mode": "^0.3.0", + "temp-file": "^3.3.4" + } + }, + "builder-util-runtime": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz", + "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "sax": "^1.2.4" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz", + "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==", + "dev": true + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + } + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001024", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz", + "integrity": "sha512-LubRSEPpOlKlhZw9wGlLHo8ZVj6ugGU3xGUfLPneNBledSd9lIM5cCGZ9Mz/mMCJUhEt4jZpYteZNVRdJw5FRA==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chart.js": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.8.0.tgz", + "integrity": "sha512-Di3wUL4BFvqI5FB5K26aQ+hvWh8wnP9A3DWGvXHVkO13D3DSnaSsdZx29cXlEsYKVkn1E2az+ZYFS4t0zi8x0w==", + "requires": { + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" + } + }, + "chartjs-color": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.3.0.tgz", + "integrity": "sha512-hEvVheqczsoHD+fZ+tfPUE+1+RbV6b+eksp2LwAhwRTVXEjCSEavvk+Hg3H6SZfGlPh/UfmWKGIvZbtobOEm3g==", + "requires": { + "chartjs-color-string": "^0.6.0", + "color-convert": "^0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", + "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", + "requires": { + "color-name": "^1.0.0" + } + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.0.tgz", + "integrity": "sha512-izfUfhEOOgAizszPlEDxo71DK/C4wprZw0vkY6UWcOSTQvN1JyfXf9DXwaV7WX+/JC+hH0ShXfdtGLA9Rca7LA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "^2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", + "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + } + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "core-js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==" + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "coverage-istanbul-loader": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz", + "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.0", + "loader-utils": "^1.2.3", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "css-line-break": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz", + "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==", + "requires": { + "base64-arraybuffer": "^0.2.0" + }, + "dependencies": { + "base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==" + } + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.0.tgz", + "integrity": "sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "detect-passive-events": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/detect-passive-events/-/detect-passive-events-1.0.4.tgz", + "integrity": "sha1-btR35uW863kHlzXc01d4nTf5qRo=" + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dmg-builder": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-21.2.0.tgz", + "integrity": "sha512-9cJEclnGy7EyKFCoHDYDf54pub/t92CQapyiUxU0w9Bj2vUvfoDagP1PMiX4XD5rPp96141h9A+QN0OB4VgvQg==", + "dev": true, + "requires": { + "app-builder-lib": "~21.2.0", + "bluebird-lst": "^1.0.9", + "builder-util": "~21.2.0", + "fs-extra": "^8.1.0", + "iconv-lite": "^0.5.0", + "js-yaml": "^3.13.1", + "sanitize-filename": "^1.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz", + "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, + "electron": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.1.tgz", + "integrity": "sha512-NJPv4SuMJlRUtXBd/Ey9XKSLOZ4+hxsOrHHPXwrBQNNdeZesoSrTMgPymee/FwMRtrSt0Pz8NccEZUu/pxmbhQ==", + "dev": true, + "requires": { + "@electron/get": "^1.0.1", + "@types/node": "^12.0.12", + "extract-zip": "^1.0.3" + } + }, + "electron-builder": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-21.2.0.tgz", + "integrity": "sha512-x8EXrqFbAb2L3N22YlGar3dGh8vwptbB3ovo3OF6K7NTpcsmM2zEoJv7GhFyX73rNzSG2HaWpXwGAtOp2JWiEw==", + "dev": true, + "requires": { + "app-builder-lib": "21.2.0", + "bluebird-lst": "^1.0.9", + "builder-util": "21.2.0", + "builder-util-runtime": "8.3.0", + "chalk": "^2.4.2", + "dmg-builder": "21.2.0", + "fs-extra": "^8.1.0", + "is-ci": "^2.0.0", + "lazy-val": "^1.0.4", + "read-config-file": "5.0.0", + "sanitize-filename": "^1.6.2", + "update-notifier": "^3.0.1", + "yargs": "^13.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "electron-publish": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz", + "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==", + "dev": true, + "requires": { + "bluebird-lst": "^1.0.9", + "builder-util": "~21.2.0", + "builder-util-runtime": "8.3.0", + "chalk": "^2.4.2", + "fs-extra": "^8.1.0", + "lazy-val": "^1.0.4", + "mime": "^2.4.4" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.3.364", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.364.tgz", + "integrity": "sha512-V6hyxQ9jzt6Jy6w8tAv4HHKhIaVS6psG/gmwtQ+2+itdkWMHJLHJ4m1sFep/fWkdKvfJcPXuywfnECRzfNa7gw==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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 + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", + "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.0.0", + "string.prototype.trimright": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, + "exifr": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/exifr/-/exifr-2.1.1.tgz", + "integrity": "sha512-BEGxJCSoLpH6C3qEhLQUSTqRoWHFdTdxvg764TAuik4kV9RZK9OKPjitJ8STh+q3/QiK2AXuWL7vNyIFeU8mLw==" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-xml-parser": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.14.0.tgz", + "integrity": "sha512-3SzQnPNtMVqaBVDzYqYt0BTaaLwkd45wTbsUsH1eiE9dnyc4b8mYcm1Q0Rcx9AWkeTj5UZFTTm55Io5yVWS1tg==" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", + "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", + "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz", + "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + } + } + }, + "global-agent": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.5.tgz", + "integrity": "sha512-pYJjCxxNBzYxo6iNO62JZn8iCFVbvpiM0zE4w/G5hBNIvLjnvzIeCVQPMKc3aK8ju5L7Q8NNI/oBSosU0eeSYw==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^2.0.2", + "core-js": "^3.3.3", + "es6-error": "^4.1.1", + "matcher": "^2.0.0", + "roarr": "^2.14.2", + "semver": "^6.3.0", + "serialize-error": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "optional": true + } + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "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 + }, + "globalthis": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.0.tgz", + "integrity": "sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg==", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "object-keys": "^1.0.12" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html2canvas": { + "version": "1.0.0-rc.5", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-rc.5.tgz", + "integrity": "sha512-DtNqPxJNXPoTajs+lVQzGS1SULRI4GQaROeU5R41xH8acffHukxRh/NBVcTBsfCkJSkLq91rih5TpbEwUP9yWA==", + "requires": { + "css-line-break": "1.1.1" + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", + "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz", + "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", + "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.6.tgz", + "integrity": "sha512-4bpOR5ZBz+wWcMeVtcf7FbjcFzCp+817z2/gHNncIRcM9MmKzUhtWCYAq27RAfUrAFwb+OCG1s9WEaVxfi6cjg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.6.tgz", + "integrity": "sha512-trGNYSfwq5s0SgM1BMEB8hX3NDmO7EP2wsDGDexiaKMB92BaRpS+qZfpkMqUBhcsOTBwNy9B/jieo4ad/t/z2g==", + "dev": true + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", + "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.6", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.6.tgz", + "integrity": "sha512-wqz7pgWMIrht3gquyEFPVXeXCti72Rm8ep9b5tQKz9Yg9LzJA3HxosF1SB3Kc81KD1A3XBkkVYtJvCKS2Z/QrA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "jimp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.8.4.tgz", + "integrity": "sha512-xCPvd2HIH8iR7+gWVnivzXwiQGnLBmLDpaEj5M0vQf3uur5MuLCOWbBduAdk6r3ur8X0kwgM4eEM0i7o+k9x9g==", + "requires": { + "@jimp/custom": "^0.8.4", + "@jimp/plugins": "^0.8.4", + "@jimp/types": "^0.8.4", + "core-js": "^2.5.7", + "regenerator-runtime": "^0.13.3" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + } + } + }, + "jpeg-js": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.6.tgz", + "integrity": "sha512-MUj2XlMB8kpe+8DJUGH/3UJm4XpI8XEgZQ+CiHDeyrGoKPdW/8FJv6ku+3UiYm5Fz3CWaL+iXmD8Q4Ap6aC1Jw==" + }, + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", + "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.14", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz", + "integrity": "sha512-UH0mXPJFJyK5uiK7EkwGtQ8f30lCBAfqRResnZ4pzLJ04SOp4SPlYkmwbbZ6iVJ6sQFVzlDUXlntBEsLRdgZpg==", + "dev": true, + "requires": { + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", + "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "dev": true, + "requires": { + "jasmine-core": "^3.3" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.4.2.tgz", + "integrity": "sha512-7g0gPj8+9JepCNJR9WjDyQ2RkZ375jpdurYQyAYv8PorUCadepl8vrD6LmMqOGcM17cnrynBawQYZHaumgDjBw==", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "lazy-val": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz", + "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + } + }, + "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 + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "license-webpack-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz", + "integrity": "sha512-7poZHRla+ae0eEButlwMrPpkXyhNVBf2EHePYWT0jyLnI6311/OXJkTI2sOIRungRpQgU2oDMpro5bSFPT5F0A==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "load-bmfont": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", + "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "loglevel": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", + "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-fetch-happen": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.1.tgz", + "integrity": "sha512-b4dfaMvUDR67zxUq1+GN7Ke9rH5WvGRmoHuMH7l+gmUCR2tCXFP6mpeJ9Dp+jB6z8mShRopSf1vLRBhRs8Cu5w==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matcher": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.0.0.tgz", + "integrity": "sha512-nlmfSlgHBFx36j/Pl/KQPbIaqE8Zf0TqmSMjsuddHDg6PMSVgmyW9HpkLs0o0M1n2GIZ/S2BZBLIww/xjhiGng==", + "dev": true, + "optional": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "optional": true + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "ng5-slider": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ng5-slider/-/ng5-slider-1.2.0.tgz", + "integrity": "sha512-ThftnI9ZveOOK2cqx8lF5EKlV3NH+e1cCV3qtIOF8Q70jdWe2lF1AtUhXS0ceyLu4CZeVz3DCvRthfG6IUHFAQ==", + "requires": { + "detect-passive-events": "^1.0.4", + "rxjs": "^5.5.6", + "rxjs-compat": "^6.5.2", + "tslib": "^1.7.1" + }, + "dependencies": { + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + } + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.50", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.50.tgz", + "integrity": "sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "dev": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "dev": true, + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "optional": true + } + } + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", + "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-registry-fetch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz", + "integrity": "sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "pacote": { + "version": "9.5.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.5.tgz", + "integrity": "sha512-jAEP+Nqj4kyMWyNpfTU/Whx1jA7jEc5cCOlurm0/0oL+v8TAp1QSsK83N7bYe+2bEdFzMAtPG5TBebjzzGV0cA==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + } + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-headers": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz", + "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==", + "requires": { + "for-each": "^0.3.3", + "string.prototype.trim": "^1.1.2" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "requires": { + "pngjs": "^3.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, + "popper.js": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", + "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true, + "optional": true + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.2.tgz", + "integrity": "sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "raw-loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz", + "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-config-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz", + "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==", + "dev": true, + "requires": { + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0", + "fs-extra": "^8.1.0", + "js-yaml": "^3.13.1", + "json5": "^2.1.0", + "lazy-val": "^1.0.4" + }, + "dependencies": { + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "read-package-json": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz", + "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } + } + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "registry-auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", + "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", + "dev": true, + "requires": { + "rc": "^1.2.8", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", + "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "roarr": { + "version": "2.14.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.14.4.tgz", + "integrity": "sha512-QMzRAQGZFPgnx4nNWp4Q+WHfiZh2HTSEjNaxFLrEIj3PmcQ1GHL5OjaaIyF9ybUDD2aZ9t3Awc/obrRPils9ng==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^2.0.3", + "detect-node": "^2.0.4", + "globalthis": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + } + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "rxjs-compat": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.5.4.tgz", + "integrity": "sha512-rkn+lbOHUQOurdd74J/hjmDsG9nFx0z66fvnbs8M95nrtKvNqCKdk7iZqdY51CGmDemTQk+kUPy4s8HVOHtkfA==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sass": { + "version": "1.22.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz", + "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.2.0.tgz", + "integrity": "sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.0.1", + "neo-async": "^2.5.0", + "pify": "^4.0.1", + "semver": "^5.5.0" + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true, + "optional": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", + "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", + "dev": true, + "optional": true, + "requires": { + "type-fest": "^0.8.0" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "optional": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stat-mode": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz", + "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trim": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz", + "integrity": "sha512-9EIjYD/WdlvLpn987+ctkLf0FfvBefOCuiEr2henD8X+7jfwPnyvTdmW8OJhj5p+M0/96mBdynLWkxUr+rHlpg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", + "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", + "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "sumchecker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.0.tgz", + "integrity": "sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ==", + "dev": true, + "requires": { + "debug": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "temp-file": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.6.tgz", + "integrity": "sha512-7TPldi8QJqRlPIF/Y33mVvo8+xDfi6+aVTCK4CrCaLqCoaOnVtf3SA4hCU0T5nhYDdOC7erw7o2uWfvijlk4Ug==", + "dev": true, + "requires": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^8.1.0" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "terser": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", + "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "three": { + "version": "0.110.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.110.0.tgz", + "integrity": "sha512-wlurH8XBO9Sd5VIw8nBa+taLR20kqaI4e9FiuMh6tqK8eOS2q2R+ZoUyufbyDTVTHhs8GiTbv0r2CMLkwerFJg==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timm": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.2.tgz", + "integrity": "sha512-IH3DYDL1wMUwmIlVmMrmesw5lZD6N+ZOAFWEyLrtpoL9Bcrs9u7M/vyOnHzDD2SMs4irLkVjqxZbHrXStS/Nmw==" + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "ts-node": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.4.1.tgz", + "integrity": "sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", + "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "dev": true + }, + "uglify-js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz", + "integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", + "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-notifier": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz", + "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==", + "dev": true, + "requires": { + "boxen": "^3.0.0", + "chalk": "^2.0.1", + "configstore": "^4.0.0", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^3.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "usng.js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/usng.js/-/usng.js-0.4.2.tgz", + "integrity": "sha512-miF0dqbxJIJCSrZJJ/QK82XbhNCFvBXllzo72o8VlBRevXBnqa9j21JNGJ6hfemSGo+ar4kjjGj/bP9fo91pmw==" + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.39.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.2.tgz", + "integrity": "sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", + "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.4", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.2.0.tgz", + "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "requires": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "xml2js": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", + "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", + "requires": { + "sax": ">=0.6.0", + "util.promisify": "~1.0.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + } + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==" + } + } +} diff --git a/CVERT-ng/package.json b/CVERT-ng/package.json new file mode 100644 index 0000000..2497b2e --- /dev/null +++ b/CVERT-ng/package.json @@ -0,0 +1,127 @@ +{ + "name": "cvert-ng", + "description": "Computer Vision Emergency Toolkit", + "homepage": "http://cver.hrail.crasar.org/", + "version": "0.0.3", + "author": { + "name": "Paul Faugeras", + "email": "polofgrs@gmail.com" + }, + "main": "electron/dist/main.js", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e", + "electron": "ng build --base-href ./ && tsc --p electron && electron ." + }, + "private": true, + "dependencies": { + "@angular/animations": "^8.2.13", + "@angular/cdk": "^8.2.3", + "@angular/common": "~8.2.13", + "@angular/compiler": "~8.2.13", + "@angular/core": "~8.2.13", + "@angular/forms": "~8.2.13", + "@angular/material": "^8.2.3", + "@angular/platform-browser": "~8.2.13", + "@angular/platform-browser-dynamic": "~8.2.13", + "@angular/router": "~8.2.13", + "bootstrap": "^4.3.1", + "chart.js": "^2.8.0", + "core-js": "^3.4.0", + "exifr": "^2.1.1", + "fast-xml-parser": "^3.14.0", + "hammerjs": "^2.0.8", + "html2canvas": "^1.0.0-rc.5", + "jimp": "^0.8.4", + "jquery": "^3.4.1", + "ng5-slider": "1.2.0", + "path": "^0.12.7", + "popper.js": "^1.15.0", + "rxjs": "~6.5.3", + "three": "^0.110.0", + "tinycolor2": "^1.4.1", + "tslib": "^1.9.0", + "usng.js": "^0.4.2", + "zone.js": "~0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.803.18", + "@angular/cli": "~8.3.18", + "@angular/compiler-cli": "~8.2.13", + "@angular/language-service": "~8.2.13", + "@types/electron": "^1.6.10", + "@types/jasmine": "~3.4.6", + "@types/jasminewd2": "~2.0.3", + "@types/node": "^12.12.7", + "@types/webgl2": "0.0.5", + "codelyzer": "^5.0.1", + "electron": "^7.1.1", + "electron-builder": "^21.2.0", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.4.1", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~2.1.0", + "karma-jasmine": "~2.0.1", + "karma-jasmine-html-reporter": "^1.4.2", + "protractor": "~5.4.0", + "ts-node": "~8.4.1", + "tslint": "~5.20.1", + "typescript": "~3.5.3" + }, + "build": { + "appId": "CVERT", + "files": [ + "**/*", + "dist/**/*" + ], + "extraResources": [ + { + "from": "./../python-server/dist/", + "to": "serverExecutables", + "filter": [ + "**/*" + ] + }, + { + "from": "./src/assets/algorithmParameters.json", + "to": "assets/algorithmParameters.json", + "filter": [ + "**/*" + ] + } + ], + "directories": { + "output": "releases", + "buildResources": "dist" + }, + "dmg": { + "iconSize": 100, + "contents": [ + { + "x": 50, + "y": 240 + }, + { + "x": 400, + "y": 240, + "type": "link", + "path": "/Applications" + } + ] + }, + "linux": { + "target": [ + "AppImage", + "deb" + ] + }, + "win": { + "target": "nsis" + } + } +} diff --git a/CVERT-ng/src/app/app-routing.module.ts b/CVERT-ng/src/app/app-routing.module.ts new file mode 100644 index 0000000..faeb733 --- /dev/null +++ b/CVERT-ng/src/app/app-routing.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { AlgorithmParametersEditComponent } from './components/algorithm-parameters-edit/algorithm-parameters-edit.component'; +import { HomeComponent } from './components/home/home.component'; + +const routes: Routes = [ + { + path: '', + component: HomeComponent + }, + { + path: 'parameters', + component: AlgorithmParametersEditComponent + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, {useHash: true})], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/CVERT-ng/src/app/app.component.html b/CVERT-ng/src/app/app.component.html new file mode 100644 index 0000000..1b44586 --- /dev/null +++ b/CVERT-ng/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/CVERT-ng/src/app/app.component.scss b/CVERT-ng/src/app/app.component.scss new file mode 100644 index 0000000..427d40c --- /dev/null +++ b/CVERT-ng/src/app/app.component.scss @@ -0,0 +1,9 @@ +html, body { + width: 100%; + height: 100%; +} + +.full-size { + width: 100%; + height: 100%; +} diff --git a/CVERT-ng/src/app/app.component.spec.ts b/CVERT-ng/src/app/app.component.spec.ts new file mode 100644 index 0000000..3236937 --- /dev/null +++ b/CVERT-ng/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'CVERT-ng'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('CVERT-ng'); + }); + + it('should render title in a h1 tag', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to CVERT-ng!'); + }); +}); diff --git a/CVERT-ng/src/app/app.component.ts b/CVERT-ng/src/app/app.component.ts new file mode 100644 index 0000000..b13b693 --- /dev/null +++ b/CVERT-ng/src/app/app.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/CVERT-ng/src/app/app.module.ts b/CVERT-ng/src/app/app.module.ts new file mode 100644 index 0000000..cb08d1a --- /dev/null +++ b/CVERT-ng/src/app/app.module.ts @@ -0,0 +1,48 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MaterialModule } from './material.module'; +import { ImageTabComponent } from './components/image-tab/image-tab.component'; +import { FiltersTabComponent } from './components/filters-tab/filters-tab.component'; +import { FilterEditTabComponent } from './components/filter-edit-tab/filter-edit-tab.component'; +import { ServerTabComponent } from './components/server-tab/server-tab.component'; +import { GpsTabComponent } from './components/gps-tab/gps-tab.component'; +import { HistogramTabComponent } from './components/histogram-tab/histogram-tab.component'; +import { ActionTabComponent } from './components/action-tab/action-tab.component'; +import { AlgorithmParametersEditComponent } from './components/algorithm-parameters-edit/algorithm-parameters-edit.component'; +import { HomeComponent } from './components/home/home.component'; +import { AlgorithmParameterItemComponent } from './components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component'; +import { FileListTabComponent } from './components/file-list-tab/file-list-tab.component'; + +@NgModule({ + declarations: [ + AppComponent, + ImageTabComponent, + FiltersTabComponent, + FilterEditTabComponent, + ServerTabComponent, + GpsTabComponent, + HistogramTabComponent, + ActionTabComponent, + AlgorithmParametersEditComponent, + HomeComponent, + AlgorithmParameterItemComponent, + FileListTabComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + BrowserAnimationsModule, + MaterialModule, + FormsModule, + HttpClientModule + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/CVERT-ng/src/app/classes/filter.ts b/CVERT-ng/src/app/classes/filter.ts new file mode 100644 index 0000000..7c9abec --- /dev/null +++ b/CVERT-ng/src/app/classes/filter.ts @@ -0,0 +1,11 @@ +export class Filter { + + filter: any; + name: string; + + constructor(filter) { + this.name = "New Filter"; + this.filter = JSON.parse(JSON.stringify(filter)); + } + +} diff --git a/CVERT-ng/src/app/classes/gisData.ts b/CVERT-ng/src/app/classes/gisData.ts new file mode 100644 index 0000000..4456e42 --- /dev/null +++ b/CVERT-ng/src/app/classes/gisData.ts @@ -0,0 +1,98 @@ +import { GisService } from '../services/gis.service'; + +export class GisData { + + altitude: number; + altitudeUnit: string; // feet or meters + + fov: number; // degrees DIAGONAL ! + fovPreset: string; + pitch: number; // degrees + + positionUnit: string; // gps or usng + latitude: number; + longitude: number; + heading: number; // degrees + + model: string; + + gisService: GisService; + + markerLat: number; + markerLon: number; + + markerUSNG: string; + + constructor(path: string, gisService: GisService) { + this.gisService = gisService; + this.getGISdataFromPath(path, gisService); + this.altitudeUnit = "meters" + this.positionUnit = "gps"; + this.fovPreset = "custom"; + this.fov = 94; // P3 diagonal FOV + } + + setMarkerPos(lat: number, lon: number) { + this.markerLat = lat; + this.markerLon = lon; + } + + getGISdataFromPath(path: string, gisService: GisService) { + const ipc = (window).require('electron').ipcRenderer; + ipc.once("getGISdataResponse", (event, exif, xmp) => { + this.getGisFromDict(exif, xmp); + this.gisService.setGis(this); + }); + ipc.send("getGISdata", path); + } + + getGisFromDict(exif: any, xmp: any) { + if (exif && exif.Model && xmp != {}) { + this.altitude = xmp.RelativeAltitude; + this.latitude = exif.latitude; + this.longitude = exif.longitude; + this.heading = xmp.GimbalYawDegree; + this.pitch = xmp.GimbalPitchDegree; + if (exif.Model.includes("FC220")) { // Mavic Pro + this.model = "DJI Mavic Pro"; + this.fov = 78.8; + } else if (exif.Model.includes("FC1102")) { //Spark + this.model = "DJI Spark"; + this.fov = 81.9; + } else if (exif.Model.includes("FC200")) { // P2 + this.model = "DJI Phantom 2 Vision"; + this.fov = 85; + } else if (exif.Model.includes("FC2103")) { // Mavic Air + this.model = "DJI Mavic Air"; + this.fov = 85; + } else if (exif.Model.includes("FC300")) { // P3 P/A/4K + this.model = "DJI Phantom 3"; + this.fov = 94; + } else if (exif.Model.includes("FC7203")) { // Mavic Mini + this.model = "DJI Mavic Mini"; + this.heading = xmp.FlightYawDegree; // Gimbal Yaw is only offset + this.fov = 83; + } else if (exif.Model.includes("FC330")) { //P4 + this.model = "DJI Phantom 4"; + this.fov = 94; + } else if (exif.Model.includes("FC6310S")) { //P4P v2 + this.model = "DJI Phantom 4 Pro v2"; + this.fov = 84; + } else if (exif.Model.includes("FC6310")) { //P4P or P4A + this.model = "DJI Phantom 4 Pro / Advanced"; + this.fov = 84; + } else { + this.model = exif.Model; + } + console.log("Found metadata for " + this.model); + } else { + this.altitude = 0; + this.latitude = 0; + this.longitude = 0; + this.heading = 0; + this.pitch = -90; + console.log("metadata not found"); + } + } + +} diff --git a/CVERT-ng/src/app/classes/imageFile.ts b/CVERT-ng/src/app/classes/imageFile.ts new file mode 100644 index 0000000..e58b6fe --- /dev/null +++ b/CVERT-ng/src/app/classes/imageFile.ts @@ -0,0 +1,13 @@ +export class ImageFile { + + path: string; + color: "currentColor" | "primary" | "accent" | "warn"; + viewed: boolean; + + constructor(path) { + this.path = path; + this.color = "currentColor"; + this.viewed = false; + } + +} diff --git a/CVERT-ng/src/app/classes/imageInstance.ts b/CVERT-ng/src/app/classes/imageInstance.ts new file mode 100644 index 0000000..a3b1ec5 --- /dev/null +++ b/CVERT-ng/src/app/classes/imageInstance.ts @@ -0,0 +1,228 @@ +import { Observable, Observer } from 'rxjs'; +import * as assets from '../../assets/assets.json'; + +import { ServerService } from '../services/server.service'; +import { GisService } from '../services/gis.service'; + +import Jimp from 'jimp'; +import { Filter } from './filter'; +import { GisData } from './gisData'; + +export class ImageInstance { + + jimpObject: Jimp; + uri: string; + histogram: number[][]; + gisData: GisData; + gisService: GisService; + + constructor() { + } + + async update(uri, gisService: GisService) { + // console.log(uri.toString()); + return new Promise((resolve, reject) => { + Jimp.read(uri).then(image => { + var resizedImage = image.resize(800, Jimp.AUTO); + this.jimpObject = resizedImage; + this.setBase64Data(resizedImage).then((data) => { + if (typeof uri == 'string') { + const ipc = (window).require('electron').ipcRenderer; + ipc.once("pathExistsResponse", (event, pathExists) => { + if (pathExists) { + this.gisService = gisService; + this.gisData = new GisData(uri, gisService); + } + resolve(); + }); + ipc.send("pathExists", uri); + } else { + resolve(); + } + }); + }); + }); + } + + async setBase64Data(image: Jimp) { + var self = this; + return new Promise((resolve, reject) => { + image.getBase64(image.getMIME(), function(err, base64data) { + self.uri = base64data; + self.getHistogram(base64data).subscribe(data => { + self.histogram = data; + resolve(); + }); + }); + }); + } + + applyFilterList(filtersList: Array, server: ServerService) : Promise { + let that = this; + return new Promise(async function(resolve, reject) { + var result = that.jimpObject.clone(); + var jimpFilterArray = []; + for (let filter of filtersList) { + if (that.isJimp(filter)) { + var args = []; + for (let arg of filter.filter.args) { + args.push(arg.value); + } + jimpFilterArray.push({apply: filter.filter.name, params: args}); + } else { + if (jimpFilterArray.length > 0) { + result = result.color(jimpFilterArray); + jimpFilterArray = []; + } + if (that.isServer(filter)) { + result = await that.applyServerFilter(result, filter, server); + } else if (filter.filter.name == "Histogram") { + result = await that.applyHistogramEqualization(result, filter); + } + } + } + if (jimpFilterArray.length > 0) { + var result = result.color(jimpFilterArray); + jimpFilterArray = []; + } + resolve(result); + }); + } + + isJimp(filter: Filter) { + var found = assets.filters.find(function(element) { + return(filter.filter.name == element.name); + }); + return(typeof found !== 'undefined'); + } + + isServer(filter: Filter) { + var found = assets.serverFilters.find(function(element) { + return(filter.filter.name == element.name); + }); + return(typeof found !== 'undefined'); + } + + async applyServerFilter(image: Jimp, filter: Filter, server: ServerService): Promise { + let base64data = await image.getBase64Async(image.getMIME()); + var data = await server.send(filter.filter, base64data, 'response'); + return (await new Promise((resolve, reject) => { + var buffer = Buffer.from(data.image, 'base64'); + Jimp.read(buffer).then(image => { + resolve(image); + }); + })); + } + + async applyHistogramEqualization(image: Jimp, filter: Filter): Promise { + //https://www.tutorialspoint.com/dip/histogram_equalization.htm + + // getting the histogram + let base64data = await image.getBase64Async(image.getMIME()); + let array: Uint8ClampedArray = await this.getImagePixelsFromURI(base64data).toPromise(); + let histogram: number[][] = this.getHistList(array); + + // getting the settings for the 3 ranges + var red = filter.filter.args.find(function(element) { + return(element.name == "R"); + }); + var green = filter.filter.args.find(function(element) { + return(element.name == "G"); + }); + var blue = filter.filter.args.find(function(element) { + return(element.name == "B"); + }); + + // sum of pixels + const r_sum: number = histogram[0].reduce((a, b) => a + b, 0); + const g_sum: number = histogram[1].reduce((a, b) => a + b, 0); + const b_sum: number = histogram[2].reduce((a, b) => a + b, 0); + + // probability mass function + const r_pmf: number[] = histogram[0].map(a => a / r_sum); + const g_pmf: number[] = histogram[1].map(a => a / g_sum); + const b_pmf: number[] = histogram[2].map(a => a / b_sum); + + // cumulative distributive function + const r_cdf: number[] = r_pmf.map((sum => value => Math.min(sum += value, 1))(0)); + const g_cdf: number[] = g_pmf.map((sum => value => Math.min(sum += value, 1))(0)); + const b_cdf: number[] = b_pmf.map((sum => value => Math.min(sum += value, 1))(0)); + + // mapping list + const r_mapping: number[] = r_cdf.map(a => parseInt(red.low + a * (red.high - red.low))); + const g_mapping: number[] = g_cdf.map(a => parseInt(green.low + a * (green.high - green.low))); + const b_mapping: number[] = b_cdf.map(a => parseInt(blue.low + a * (blue.high - blue.low))); + + // scanning each individual pixel and mapping to its new value + image.scan(0, 0, image.bitmap.width, image.bitmap.height, function(x, y, idx) { + this.bitmap.data[idx + 0] = r_mapping[this.bitmap.data[idx + 0]]; + this.bitmap.data[idx + 1] = g_mapping[this.bitmap.data[idx + 1]]; + this.bitmap.data[idx + 2] = b_mapping[this.bitmap.data[idx + 2]]; + }); + + return image; + } + + getHistList(imagePixels: Uint8ClampedArray): number[][] { + var rvals = this.array256(0); + var gvals = this.array256(0); + var bvals = this.array256(0); + var avals = this.array256(0); + for (let i = 0; i < imagePixels.length; i += 4) { + rvals[imagePixels[i]]++; + gvals[imagePixels[i+1]]++; + bvals[imagePixels[i+2]]++; + avals[imagePixels[i+3]]++; + } + return([rvals, gvals, bvals, avals]); + } + + getHistogram(uri: string): Observable { + return Observable.create((observer: Observer) => { + this.getImagePixelsFromURI(uri).subscribe(imagePixels => { + let result = this.getHistList(imagePixels); + observer.next(result); + }); + }); + } + + getImagePixelsFromURI(uri) : Observable { + return Observable.create((observer: Observer) => { + let img = new Image(); + img.crossOrigin = 'Anonymous'; + if (typeof uri == "string") { + img.src = uri; + } else { + img.src = uri.uri; + } + if (!img.complete) { + img.onload = () => { + observer.next(this.getImagePixels(img)); + observer.complete(); + }; + img.onerror = (err) => { + observer.error(err); + }; + } else { + observer.next(this.getImagePixels(img)); + observer.complete(); + } + }); + } + + getImagePixels(img: HTMLImageElement): Uint8ClampedArray { + var canvas = document.createElement("canvas"); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + return ctx.getImageData(0, 0, canvas.width, canvas.height).data; + } + + array256(default_value: number) : number[] { + var arr = []; + for (var i=0; i<256; i++) { arr[i] = default_value; } + return arr; + } + +} diff --git a/CVERT-ng/src/app/components/action-tab/action-tab.component.html b/CVERT-ng/src/app/components/action-tab/action-tab.component.html new file mode 100644 index 0000000..520c0cd --- /dev/null +++ b/CVERT-ng/src/app/components/action-tab/action-tab.component.html @@ -0,0 +1,68 @@ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
diff --git a/CVERT-ng/src/app/components/action-tab/action-tab.component.scss b/CVERT-ng/src/app/components/action-tab/action-tab.component.scss new file mode 100644 index 0000000..2413c5d --- /dev/null +++ b/CVERT-ng/src/app/components/action-tab/action-tab.component.scss @@ -0,0 +1,16 @@ +button { + width: 100%; +} + +.full-width { + width: 100%; +} + +.full-height { + height: 100%; +} + +.open-save { + width: 100%; + height: 33% +} diff --git a/CVERT-ng/src/app/components/action-tab/action-tab.component.spec.ts b/CVERT-ng/src/app/components/action-tab/action-tab.component.spec.ts new file mode 100644 index 0000000..303a969 --- /dev/null +++ b/CVERT-ng/src/app/components/action-tab/action-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ActionTabComponent } from './action-tab.component'; + +describe('ActionTabComponent', () => { + let component: ActionTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ActionTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ActionTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/action-tab/action-tab.component.ts b/CVERT-ng/src/app/components/action-tab/action-tab.component.ts new file mode 100644 index 0000000..cd23516 --- /dev/null +++ b/CVERT-ng/src/app/components/action-tab/action-tab.component.ts @@ -0,0 +1,124 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import html2canvas from 'html2canvas'; + +import * as path from 'path'; + +import { ImageInstance } from '../../classes/imageInstance'; +import { ImageFile } from '../../classes/imageFile'; +import { Filter } from '../../classes/filter'; + +import { FileService } from '../../services/file.service'; +import { ServerService } from '../../services/server.service'; +import { GisService } from '../../services/gis.service'; + +@Component({ + selector: 'app-action-tab', + templateUrl: './action-tab.component.html', + styleUrls: ['./action-tab.component.scss'] +}) +export class ActionTabComponent implements OnInit { + + @Input() bottomImage: ImageInstance; + + @Input() filtersList: Array; + @Output() filtersListChange = new EventEmitter(); + + @Input() inputFiles: ImageFile[]; + @Output() inputFilesChange = new EventEmitter(); + + private inputLabel = "Input"; + private outputLabel = "Output"; + + private outputDir: string; + + constructor(private fileService: FileService, + private serverService: ServerService, + private gisService: GisService) { } + + ngOnInit() { } + + saveImage() { + this.fileService.saveImage(this.bottomImage); + } + + saveCanvas() { + let image = this.getElementInsideContainer("bottom-container", "img"); + html2canvas(document.querySelector("#bottom-container")).then(canvas => { + let outCanvas = document.createElement('canvas'); + outCanvas.width = image.width; + outCanvas.height = image.height; + let ctx = outCanvas.getContext('2d'); + ctx.drawImage(canvas, (canvas.width - image.width)/2, (canvas.height - image.height)/2, image.width, image.height, 0, 0, image.width, image.height); + const mime = "image/png"; + var img = outCanvas.toDataURL(mime); + this.fileService.saveCanvas(img, mime); + }); + } + + getElementInsideContainer(containerID, childID) { + var elm; + var elms = document.getElementById(containerID).getElementsByTagName("*"); + for (var i = 0; i < elms.length; i++) { + if (elms[i].id === childID) { + elm = elms[i]; + break; + } + } + return elm; + } + + getInputFiles() { + this.fileService.getIntputFiles().then((filePaths) => { + if (filePaths.length > 0) { + this.inputFiles = []; + console.log(filePaths); + for (let filePath of filePaths) { + this.inputFiles.push(new ImageFile(filePath)); + } + this.inputFilesChange.emit(this.inputFiles); + this.inputLabel = 'In: ' + filePaths.length.toString() + ' files'; + } else { + console.log('no input files selected'); + } + }); + } + + getOutputDirectory() { + this.fileService.getOutputDirectory().then((dirPath) => { + if (dirPath !== '') { + console.log(dirPath); + this.outputDir = dirPath; + var dirSplit = path.parse(dirPath); + this.outputLabel = 'Out: ' + dirSplit.name; + } else { + console.log('no output folder selected'); + } + }); + } + + async applyFilters() { + for (var file of this.inputFiles) { + var image = new ImageInstance(); + await image.update(file.path, this.gisService); + await image.applyFilterList(this.filtersList, this.serverService).then(async (result) => { + await image.update(result, image.gisService).then(async (res) => { + var pathSplit = path.parse(file.path); + var name = pathSplit.name + '-mod' + pathSplit.ext; + var imagePath = path.join(this.outputDir, name); + console.log(imagePath); + await this.fileService.saveImageToPath(image, imagePath); + }); + }) + } + } + + async applyGPS() { + let filePaths = []; + for (let file of this.inputFiles) { + filePaths.push(file.path); + } + var result = await this.serverService.sendGPSRequest(filePaths, this.outputDir, this.gisService.gis); + console.log(result); + } + +} diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.html b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.html new file mode 100644 index 0000000..41d9012 --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.html @@ -0,0 +1,22 @@ +
+ +
+ + {{parameter.name}} + + +
+ +
+ + Use default ({{parameter.defaultValue}}) + +
+ +
diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.scss b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.scss new file mode 100644 index 0000000..ec1b40f --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.scss @@ -0,0 +1,3 @@ +mat-label { + color: #FFFFFF; +} diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.spec.ts b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.spec.ts new file mode 100644 index 0000000..9f38b8a --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AlgorithmParameterItemComponent } from './algorithm-parameter-item.component'; + +describe('AlgorithmParameterItemComponent', () => { + let component: AlgorithmParameterItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AlgorithmParameterItemComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlgorithmParameterItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.ts b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.ts new file mode 100644 index 0000000..b4ef8da --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameter-item/algorithm-parameter-item.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'app-algorithm-parameter-item', + templateUrl: './algorithm-parameter-item.component.html', + styleUrls: ['./algorithm-parameter-item.component.scss'] +}) +export class AlgorithmParameterItemComponent implements OnInit { + + @Input() parameter: any; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.html b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.html new file mode 100644 index 0000000..340975a --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.html @@ -0,0 +1,13 @@ +
+
+ + +
+ +
+ +
+ +
diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.scss b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.scss new file mode 100644 index 0000000..4283169 --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.scss @@ -0,0 +1,21 @@ +html, body { + height: 100%; + width: 100%; +} + +.topContainer { + height: 100%; + width: 100%; + background-color: rgba(50, 50, 50, 1); + color: #FFFFFF; + overflow-x: hidden; +} + +app-algorithm-parameter-item { + border: solid 1px #888; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + border-radius: 4px; +} diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.spec.ts b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.spec.ts new file mode 100644 index 0000000..f6b71ca --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AlgorithmParametersEditComponent } from './algorithm-parameters-edit.component'; + +describe('AlgorithmParametersEditComponent', () => { + let component: AlgorithmParametersEditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AlgorithmParametersEditComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlgorithmParametersEditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.ts b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.ts new file mode 100644 index 0000000..8fdca00 --- /dev/null +++ b/CVERT-ng/src/app/components/algorithm-parameters-edit/algorithm-parameters-edit.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; + +import { FileService } from '../../services/file.service'; + +@Component({ + selector: 'app-algorithm-parameters-edit', + templateUrl: './algorithm-parameters-edit.component.html', + styleUrls: ['./algorithm-parameters-edit.component.scss'] +}) +export class AlgorithmParametersEditComponent implements OnInit { + + algorithmParameters: any; + + constructor(private fileService: FileService) { + // this.algorithmParameters = assets.algorithmParameters; + } + + ngOnInit() { + this.fileService.getAlgorithmParameters('paramWin').then((parameters) => { + this.algorithmParameters = parameters; + }); + } + + saveParameters() { + console.log(this.algorithmParameters); + this.fileService.saveAlgorithmParameters(this.algorithmParameters); + } + +} diff --git a/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.html b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.html new file mode 100644 index 0000000..8e0213e --- /dev/null +++ b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.html @@ -0,0 +1,32 @@ +
+

+ + Files + +

+ +
+
+ label +
{{getName(file)}}
+ remove_red_eye + remove_red_eye +
+
+ +
diff --git a/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.scss b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.scss new file mode 100644 index 0000000..30faa50 --- /dev/null +++ b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.scss @@ -0,0 +1,41 @@ +p { + height: 5%; +} + +.full-width { + width: 100%; +} + +.full-height { + height: 100%; +} + +.files-list { + width: 90%; + height: 90%; + border: solid 2px #444; + // min-height: 60px; + // display: block; + background: black; + border-radius: 10px; + //overflow: hidden; + overflow-y:auto; +} + +.file-item { + //padding: 20px 10px; + border: solid 1px #888; + // color: rgba(0, 0, 0, 0.87); + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + //box-sizing: border-box; + background: #444; + //font-size: 14px; + border-radius: 4px; +} + +.color-icon, .view-icon, .file-name { + cursor: pointer; +} diff --git a/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.spec.ts b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.spec.ts new file mode 100644 index 0000000..8a4be33 --- /dev/null +++ b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FileListTabComponent } from './file-list-tab.component'; + +describe('FileListTabComponent', () => { + let component: FileListTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FileListTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FileListTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.ts b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.ts new file mode 100644 index 0000000..ccba32d --- /dev/null +++ b/CVERT-ng/src/app/components/file-list-tab/file-list-tab.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +import * as path from 'path'; + +import { ImageInstance } from '../../classes/imageInstance'; +import { ImageFile } from '../../classes/imageFile'; +import { GisService } from '../../services/gis.service'; + +@Component({ + selector: 'app-file-list-tab', + templateUrl: './file-list-tab.component.html', + styleUrls: ['./file-list-tab.component.scss'] +}) +export class FileListTabComponent implements OnInit { + + @Input() topImage: ImageInstance; + @Output() topImageChange = new EventEmitter(); + + @Input() bottomImage: ImageInstance; + @Output() bottomImageChange = new EventEmitter(); + + @Input() inputFiles: ImageFile[]; + @Output() inputFilesChange = new EventEmitter(); + + constructor(private gisService: GisService) { } + + ngOnInit() { + } + + async openImage(image: ImageFile) { + this.topImage = new ImageInstance(); + await this.topImage.update(image.path, this.gisService); + this.topImageChange.emit(this.topImage); + this.bottomImage = new ImageInstance(); + await this.bottomImage.update(image.path, this.gisService); + this.bottomImageChange.emit(this.bottomImage); + } + + onChangeColor(image: ImageFile) { + switch (image.color) { + case "currentColor": + image.color = "primary"; + break; + case "primary": + image.color = "accent"; + break; + case "accent": + image.color = "warn"; + break; + case "warn": + image.color = "currentColor"; + break; + default: + break; + }; + } + + onChangeViewed(file: ImageFile) { + file.viewed = !file.viewed; + } + + getName(image: ImageFile): string { + return path.basename(image.path); + } + +} diff --git a/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.html b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.html new file mode 100644 index 0000000..bdae61c --- /dev/null +++ b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.html @@ -0,0 +1,66 @@ +
+
+ + Name + + + + + Type + + + + {{filter.name}} + + + + + {{filter.name}} + + + + + {{filter.name}} + + + + + +
+ + + + {{arg.name}} + + + +
+ + +
+ + +
+ +
+
diff --git a/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.scss b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.scss new file mode 100644 index 0000000..34b913b --- /dev/null +++ b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.scss @@ -0,0 +1,69 @@ +.full-width { + width: 100% +} + +.container { + width: 100%; + height: 100% +} + +::ng-deep { + .custom-slider { + .ng5-slider { + .ng5-slider-pointer { + width: 12px; + height: 12px; + top: -5px; + outline: none; + } + + .ng5-slider-pointer::after { + position: absolute; + top: -9px; + left: -9px; + width: 30px; + height: 30px; + border-radius: 50%; + transform: scale(0); + opacity: 0; + transition: transform .4s cubic-bezier(.25,.8,.25,1), + background-color .4s cubic-bezier(.25,.8,.25,1),opacity .4s + cubic-bezier(.25,.8,.25,1); + } + + .ng5-slider-pointer.ng5-slider-active::after { + transform: scale(1); + opacity: 1; + background-color: rgba(255,64,129,.2); + } + + .ng5-slider-bar-wrapper { + height: auto; + padding: 0; + margin: 0; + } + + .ng5-slider-bar { + height: 2px; + } + } + + #R-slider { + .ng5-slider-pointer, .ng5-slider-selection { + background-color: #FF0000; + } + } + + #G-slider { + .ng5-slider-pointer, .ng5-slider-selection { + background-color: #00FF00; + } + } + + #B-slider { + .ng5-slider-pointer, .ng5-slider-selection { + background-color: #0000FF; + } + } + } +} diff --git a/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.spec.ts b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.spec.ts new file mode 100644 index 0000000..a99c825 --- /dev/null +++ b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterEditTabComponent } from './filter-edit-tab.component'; + +describe('FilterEditTabComponent', () => { + let component: FilterEditTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FilterEditTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FilterEditTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.ts b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.ts new file mode 100644 index 0000000..7854de8 --- /dev/null +++ b/CVERT-ng/src/app/components/filter-edit-tab/filter-edit-tab.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; + +import { Filter } from '../../classes/filter'; +import { FileService } from '../../services/file.service'; + +import * as assets from '../../../assets/assets.json'; +import { Options } from 'ng5-slider'; + +@Component({ + selector: 'app-filter-edit-tab', + templateUrl: './filter-edit-tab.component.html', + styleUrls: ['./filter-edit-tab.component.scss'] +}) +export class FilterEditTabComponent implements OnInit { + + @Input() currentFilter: Filter; + @Output() currentFilterChange = new EventEmitter(); + + filters: any; + serverFilters: any; + miscFilters: any; + allFilters: any; + + constructor(private fileService: FileService) { + this.filters = assets.filters; + this.serverFilters = assets.serverFilters; + this.miscFilters = assets.miscFilters; + this.allFilters = this.filters.concat(this.serverFilters).concat(this.miscFilters); + } + + ngOnInit() { + } + + changeFilter() { + this.currentFilter.filter = JSON.parse(JSON.stringify( + this.allFilters.find( + filterItem => { + return filterItem.name == this.currentFilter.filter.name; + } + ) + )); + this.currentFilterChange.emit(this.currentFilter); + } + + getRangeOptions(arg) { + let options: Options = { + floor: arg.min, + ceil: arg.max, + draggableRange: true + } + return options + } + + openParameters() { + this.fileService.openParameters(); + } + +} diff --git a/CVERT-ng/src/app/components/filters-tab/filters-tab.component.html b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.html new file mode 100644 index 0000000..25fb44c --- /dev/null +++ b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.html @@ -0,0 +1,38 @@ +
+

+ + Filters + +

+ +
+
+ edit + {{filter.name}} + clear +
+
+ Add Filter + add +
+
+ +
+ +
+
diff --git a/CVERT-ng/src/app/components/filters-tab/filters-tab.component.scss b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.scss new file mode 100644 index 0000000..4fd970b --- /dev/null +++ b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.scss @@ -0,0 +1,82 @@ +button { + width: 90%; + height: 80% +} + +p { + height: 5%; +} + +.full-width { + width: 100%; +} + +.full-height { + height: 100%; +} + +.filters-list { + width: 90%; + height: 80%; + border: solid 2px #444; + // min-height: 60px; + // display: block; + background: black; + border-radius: 10px; + //overflow: hidden; +} + +.filters-item { + //padding: 20px 10px; + border: solid 1px #888; + // color: rgba(0, 0, 0, 0.87); + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + //box-sizing: border-box; + cursor: move; + background: #444; + //font-size: 14px; + border-radius: 4px; +} + +.add-filter-item { + color: #999; + border: solid 1px #666; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + background: #333; + border-radius: 4px; +} + +.delete-icon, .add-icon, .edit-icon { + cursor: pointer; +} + +.apply-filters-button { + width: 100%; + height: 10%; +} + +.cdk-drag-preview { + //box-sizing: border-box; + //border-radius: 4px; + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), + 0 8px 10px 1px rgba(0, 0, 0, 0.14), + 0 3px 14px 2px rgba(0, 0, 0, 0.12); +} + +.cdk-drag-placeholder { + opacity: 0; +} + +.cdk-drag-animating { + transition: transform 250ms cubic-bezier(0, 0, 0.2, 1); +} + +.filters-list.cdk-drop-list-dragging .filters-item:not(.cdk-drag-placeholder) { + transition: transform 250ms cubic-bezier(0, 0, 0.2, 1); +} diff --git a/CVERT-ng/src/app/components/filters-tab/filters-tab.component.spec.ts b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.spec.ts new file mode 100644 index 0000000..fb27c38 --- /dev/null +++ b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FiltersTabComponent } from './filters-tab.component'; + +describe('FiltersTabComponent', () => { + let component: FiltersTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FiltersTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FiltersTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/filters-tab/filters-tab.component.ts b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.ts new file mode 100644 index 0000000..a88f980 --- /dev/null +++ b/CVERT-ng/src/app/components/filters-tab/filters-tab.component.ts @@ -0,0 +1,78 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop'; + +import { Filter } from '../../classes/filter'; +import { ImageInstance } from '../../classes/imageInstance'; + +import { ServerService } from '../../services/server.service'; + +import Jimp from 'jimp'; +import * as assets from '../../../assets/assets.json'; + +@Component({ + selector: 'app-filters-tab', + templateUrl: './filters-tab.component.html', + styleUrls: ['./filters-tab.component.scss'] +}) +export class FiltersTabComponent implements OnInit { + + @Input() topImage: ImageInstance; + @Output() topImageChange = new EventEmitter(); + + @Input() bottomImage: ImageInstance; + @Output() bottomImageChange = new EventEmitter(); + + @Input() filtersList: Array; + @Output() filterListChange = new EventEmitter(); + + @Input() currentFilter: Filter; + @Output() currentFilterChange = new EventEmitter(); + + sourceImage: Jimp; + + constructor(private server: ServerService) { } + + ngOnInit() { + // console.log(assets.filters); + // console.log(assets.filters); + } + + drop(event: CdkDragDrop) { + moveItemInArray(this.filtersList, event.previousIndex, event.currentIndex); + // console.log(this.filtersList); + this.filterListChange.emit(this.filtersList); + } + + addFilter() { + this.filtersList.push(new Filter(assets.filters[0])); + this.filterListChange.emit(this.filtersList); + this.currentFilter = this.filtersList[this.filtersList.length-1]; + this.currentFilterChange.emit(this.currentFilter); + // console.log('add filter'); + } + + editFilter(filter: Filter) { + this.currentFilter = filter; + this.currentFilterChange.emit(this.currentFilter); + // console.log(filter); + } + + removeFilterFromList(filter: Filter) { + if (this.currentFilter == filter) { + this.currentFilter = undefined; + this.currentFilterChange.emit(this.currentFilter); + } + this.filtersList.splice(this.filtersList.indexOf(filter), 1); + this.filterListChange.emit(this.filtersList); + // console.log(filter); + } + + applyFilters() { + this.topImage.applyFilterList(this.filtersList, this.server).then(result => { + this.bottomImage.update(result, this.bottomImage.gisService); + this.bottomImageChange.emit(this.bottomImage); + // console.log(this.bottomImage); + }); + } + +} diff --git a/CVERT-ng/src/app/components/gps-tab/gps-tab.component.html b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.html new file mode 100644 index 0000000..c60b1fd --- /dev/null +++ b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.html @@ -0,0 +1,140 @@ +
+
+ +
+ + Altitude + + + + + Altitude + + + + + unit + + Feet + Meters + + + + + FOV (deg) + + + + + Pitch (deg) + + +
+ +
+ + Latitude + + + + + Longitude + + + + + + + heading (deg) + + +
+ +
+ +
+
+ + Grid + +
+
+ + Markers + +
+
+ +
+
+ lat: {{gisData.markerLat.toFixed(8)}} +
+
+ lon: {{gisData.markerLon.toFixed(8)}} +
+
+ +
+
+ USNG: {{gisData.markerUSNG}} +
+
+ +
diff --git a/CVERT-ng/src/app/components/gps-tab/gps-tab.component.scss b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.scss new file mode 100644 index 0000000..011ce20 --- /dev/null +++ b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.scss @@ -0,0 +1,30 @@ +.full-width { + width: 100% +} + +.half-width { + width: 50% +} + +.third-width { + width: 33% +} + +.quarter-width { + width: 25% +} + +.container { + width: 100%; + height: 100% +} + +.center-block { + margin-left:auto; + margin-right:auto; + display:block; +} + +.text-center { + text-align:center +} diff --git a/CVERT-ng/src/app/components/gps-tab/gps-tab.component.spec.ts b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.spec.ts new file mode 100644 index 0000000..ad40046 --- /dev/null +++ b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GpsTabComponent } from './gps-tab.component'; + +describe('GpsTabComponent', () => { + let component: GpsTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GpsTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GpsTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/gps-tab/gps-tab.component.ts b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.ts new file mode 100644 index 0000000..bd1a0cc --- /dev/null +++ b/CVERT-ng/src/app/components/gps-tab/gps-tab.component.ts @@ -0,0 +1,88 @@ +import { Component, OnInit, Input, ViewChild } from '@angular/core'; + +import { GisData } from '../../classes/gisData'; + +import { CanvasService } from '../../services/canvas.service'; +import { GisService } from '../../services/gis.service'; + +@Component({ + selector: 'app-gps-tab', + templateUrl: './gps-tab.component.html', + styleUrls: ['./gps-tab.component.scss'] +}) +export class GpsTabComponent implements OnInit { + + @Input() gisData: GisData; + + altitudeFeet: number; + metersToFeet = 3.28084; // factor + + markerDisplayed = true; + gridDisplayed = true; + + // wait for data init for change + @ViewChild('altitude', {static: false}) set altitude(element) { + if (element) { + this.updateAltitude(); + } + } + @ViewChild('pitch', {static: false}) set pitch(element) { + if (element) { + this.updateCanvas('pitch'); + } + } + @ViewChild('fov', {static: false}) set fov(element) { + if (element) { + this.updateCanvas('fov'); + } + } + + constructor(private canvasService: CanvasService, + private gisService: GisService) { + } + + ngOnInit() { + this.altitudeFeet = this.gisData.altitude * this.metersToFeet; + } + + updateAltitude() { + if (this.gisData.altitudeUnit == "feet") { + this.gisData.altitude = Number((this.altitudeFeet / this.metersToFeet).toFixed(2)); + } else { + this.altitudeFeet = this.gisData.altitude * this.metersToFeet; + } + this.updateCanvas('altitude'); + } + + onGridDisplayToggle(evt: any) { + this.canvasService.displayGrid(evt.checked); + this.gridDisplayed = evt.checked; + } + + onMarkersDisplayToggle(evt: any) { + this.canvasService.displayMarkers(evt.checked); + this.markerDisplayed = evt.checked; + } + + updateCanvas(property: string) { + var value: number; + switch(property) { + case 'altitude': + value = this.gisData.altitude; + break; + case 'pitch': + value = this.gisData.pitch; + break; + case 'fov': + value = this.gisData.fov; + break; + default: + console.log('not a known property for canvas update'); + } + if (typeof value !== 'undefined') { + this.canvasService.updateGIS(property, value); + this.gisService.setGis(this.gisData); + } + } + +} diff --git a/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.html b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.html new file mode 100644 index 0000000..8f963fd --- /dev/null +++ b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.scss b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.scss new file mode 100644 index 0000000..e970d03 --- /dev/null +++ b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.scss @@ -0,0 +1,10 @@ +#container { + position: relative; + height: 100%; + width: 100%; +} + +#histogramCanvas { + width: 100%; + height: 100%; +} diff --git a/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.spec.ts b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.spec.ts new file mode 100644 index 0000000..d46aaef --- /dev/null +++ b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HistogramTabComponent } from './histogram-tab.component'; + +describe('HistogramTabComponent', () => { + let component: HistogramTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HistogramTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HistogramTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.ts b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.ts new file mode 100644 index 0000000..ea00eb2 --- /dev/null +++ b/CVERT-ng/src/app/components/histogram-tab/histogram-tab.component.ts @@ -0,0 +1,99 @@ +import { Component, OnInit, Input, ViewChild, ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core'; +import { Chart } from 'chart.js'; + +@Component({ + selector: 'app-histogram-tab', + templateUrl: './histogram-tab.component.html', + styleUrls: ['./histogram-tab.component.scss'] +}) +export class HistogramTabComponent implements OnInit, OnChanges, AfterViewInit { + + @Input() histogramData: number[][]; + @ViewChild("histogramCanvas", {static: false}) histogramCanvas: ElementRef; + + chart: Chart; + labels: Array; + + constructor() { } + + ngOnInit() { + this.labels = new Array(255); + for (var i=0; i +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ diff --git a/CVERT-ng/src/app/components/home/home.component.scss b/CVERT-ng/src/app/components/home/home.component.scss new file mode 100644 index 0000000..22a7644 --- /dev/null +++ b/CVERT-ng/src/app/components/home/home.component.scss @@ -0,0 +1,80 @@ +html, body { + height: 100%; +} + +img { + height: 90%; + box-shadow: 0px 0px 10px 3px #000000; +} + +.row { + display: flex; + justify-content: center; + // align-items: center; + background-color: rgba(50, 50, 50, 1); +} + +.full-height { + height: 100%; +} + +.full-width { + width: 100%; +} + +.container-fluid { + text-align: center; +} + +#left-panel > * { + border: 1px solid #000000; + color: #ffffff; +} + +#center-panel > * { + border: 1px solid #000000; + color: #ffffff; +} + +#right-panel > * { + border: 1px solid #000000; + color: #ffffff; +} + +#filters-tab { + height: 50%; +} + +#filter-edit { + height: 30%; +} + +#server-tab { + height: 20%; +} + +#top-picture, #bottom-picture { + height: 50%; +} + +#top-image, #bottom-image { + height: 100%; + width: 100%; + text-align: center; +} + +#GPS-tab { + height: 25%; +} + +#file-list { + height: 35%; +} + +#histogram { + height: 25%; +} + +#actions-tab { + height: 15%; +} diff --git a/CVERT-ng/src/app/components/home/home.component.spec.ts b/CVERT-ng/src/app/components/home/home.component.spec.ts new file mode 100644 index 0000000..490e81b --- /dev/null +++ b/CVERT-ng/src/app/components/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/home/home.component.ts b/CVERT-ng/src/app/components/home/home.component.ts new file mode 100644 index 0000000..e629e14 --- /dev/null +++ b/CVERT-ng/src/app/components/home/home.component.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; + +import { Filter } from '../../classes/filter'; +import { ImageInstance } from '../../classes/imageInstance'; +import { ImageFile } from '../../classes/imageFile'; + +import { GisService } from '../../services/gis.service'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) + +export class HomeComponent implements OnInit { + + topImage: ImageInstance; + bottomImage: ImageInstance; + + inputFiles: ImageFile[]; + + filtersList: Array; + currentFilter: Filter; + + constructor(private gisService: GisService) { + // this.topImage = new ImageInstance("assets/cache/test.JPG"); + // this.bottomImage = new ImageInstance("assets/cache/test.JPG"); + this.filtersList = new Array(); + } + + ngOnInit() { + } +} diff --git a/CVERT-ng/src/app/components/image-tab/image-tab.component.html b/CVERT-ng/src/app/components/image-tab/image-tab.component.html new file mode 100644 index 0000000..f261d17 --- /dev/null +++ b/CVERT-ng/src/app/components/image-tab/image-tab.component.html @@ -0,0 +1,12 @@ +
+ + + + +
diff --git a/CVERT-ng/src/app/components/image-tab/image-tab.component.scss b/CVERT-ng/src/app/components/image-tab/image-tab.component.scss new file mode 100644 index 0000000..c61cab1 --- /dev/null +++ b/CVERT-ng/src/app/components/image-tab/image-tab.component.scss @@ -0,0 +1,23 @@ +.container { + height: 100%; + width: 100%; + text-align: center; + position: relative; +} + +img { + max-width: 90%; + max-height: 90%; + box-shadow: 0px 0px 10px 3px #000000; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +#overlayCanvas { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} diff --git a/CVERT-ng/src/app/components/image-tab/image-tab.component.spec.ts b/CVERT-ng/src/app/components/image-tab/image-tab.component.spec.ts new file mode 100644 index 0000000..92fee0a --- /dev/null +++ b/CVERT-ng/src/app/components/image-tab/image-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ImageTabComponent } from './image-tab.component'; + +describe('ImageTabComponent', () => { + let component: ImageTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ImageTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ImageTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/image-tab/image-tab.component.ts b/CVERT-ng/src/app/components/image-tab/image-tab.component.ts new file mode 100644 index 0000000..2d9bbd0 --- /dev/null +++ b/CVERT-ng/src/app/components/image-tab/image-tab.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core'; + +import { ImageInstance } from '../../classes/imageInstance'; +import { CanvasService } from '../../services/canvas.service'; + +@Component({ + selector: 'app-image-tab', + templateUrl: './image-tab.component.html', + styleUrls: ['./image-tab.component.scss'], + // providers: [CanvasService] // to add for two canvas +}) +export class ImageTabComponent implements OnInit { + + @Input() image: ImageInstance; + @Input() addOverlay: boolean; + @Input() containerId: string; + + @ViewChild("img", {static: false}) img: ElementRef; + @ViewChild("overlayCanvas", {static: false}) overlayCanvas: ElementRef; + + constructor(private canvasService: CanvasService) { } + + ngOnInit() { + } + + onImageLoad() { + if (this.addOverlay) { + if (this.addOverlay && !this.canvasService.isInit()) { + this.canvasService.createScene(this.overlayCanvas); + this.canvasService.animate(); + } + this.resizeCanvas(); + } + } + + resizeCanvas() { + if (typeof this.img !== "undefined" && typeof this.overlayCanvas !== "undefined") { + this.overlayCanvas.nativeElement.height = this.img.nativeElement.height; + this.overlayCanvas.nativeElement.width = this.img.nativeElement.width; + this.canvasService.resize(); + } + } + +} diff --git a/CVERT-ng/src/app/components/server-tab/server-tab.component.html b/CVERT-ng/src/app/components/server-tab/server-tab.component.html new file mode 100644 index 0000000..3d3ecb6 --- /dev/null +++ b/CVERT-ng/src/app/components/server-tab/server-tab.component.html @@ -0,0 +1,29 @@ +
+
+ +
+ + IP address + + + + + Port + + + +
+ +
+
+
+ +
diff --git a/CVERT-ng/src/app/components/server-tab/server-tab.component.scss b/CVERT-ng/src/app/components/server-tab/server-tab.component.scss new file mode 100644 index 0000000..c955d21 --- /dev/null +++ b/CVERT-ng/src/app/components/server-tab/server-tab.component.scss @@ -0,0 +1,16 @@ +.full-width { + width: 100% +} + +.half-width { + width: 50% +} + +.quarter-width { + width: 25% +} + +.container { + width: 100%; + height: 100% +} diff --git a/CVERT-ng/src/app/components/server-tab/server-tab.component.spec.ts b/CVERT-ng/src/app/components/server-tab/server-tab.component.spec.ts new file mode 100644 index 0000000..d930e81 --- /dev/null +++ b/CVERT-ng/src/app/components/server-tab/server-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ServerTabComponent } from './server-tab.component'; + +describe('ServerTabComponent', () => { + let component: ServerTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ServerTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ServerTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/CVERT-ng/src/app/components/server-tab/server-tab.component.ts b/CVERT-ng/src/app/components/server-tab/server-tab.component.ts new file mode 100644 index 0000000..0868243 --- /dev/null +++ b/CVERT-ng/src/app/components/server-tab/server-tab.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { ServerService } from '../../services/server.service'; + +@Component({ + selector: 'app-server-tab', + templateUrl: './server-tab.component.html', + styleUrls: ['./server-tab.component.scss'] +}) +export class ServerTabComponent implements OnInit { + + constructor(private server: ServerService) { + } + + ngOnInit() { + } + + reset() { + this.server.reset(); + } + +} diff --git a/CVERT-ng/src/app/material.module.ts b/CVERT-ng/src/app/material.module.ts new file mode 100644 index 0000000..61be626 --- /dev/null +++ b/CVERT-ng/src/app/material.module.ts @@ -0,0 +1,39 @@ +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatSliderModule } from '@angular/material/slider'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; +import { DragDropModule } from '@angular/cdk/drag-drop'; + +import { Ng5SliderModule } from 'ng5-slider'; + +import { NgModule } from '@angular/core'; + +@NgModule ({ + imports: [ + DragDropModule, + MatIconModule, + MatInputModule, + MatSelectModule, + MatSliderModule, + MatButtonModule, + MatCheckboxModule, + MatSlideToggleModule, + Ng5SliderModule + ], + exports: [ + DragDropModule, + MatIconModule, + MatInputModule, + MatSelectModule, + MatSliderModule, + MatButtonModule, + MatCheckboxModule, + MatSlideToggleModule, + Ng5SliderModule + ] +}) + +export class MaterialModule { } diff --git a/CVERT-ng/src/app/services/canvas.service.ts b/CVERT-ng/src/app/services/canvas.service.ts new file mode 100644 index 0000000..1a63d36 --- /dev/null +++ b/CVERT-ng/src/app/services/canvas.service.ts @@ -0,0 +1,237 @@ +import * as THREE from 'three'; +import { Injectable, ElementRef, OnDestroy, NgZone } from '@angular/core'; + +import { GisService } from '../services/gis.service'; + +@Injectable({ + providedIn: 'root' +}) +export class CanvasService implements OnDestroy { + + private canvas: HTMLCanvasElement; + private renderer: THREE.WebGLRenderer; + private camera: THREE.PerspectiveCamera; + private scene: THREE.Scene; + private light: THREE.AmbientLight; + + private grid: THREE.GridHelper; + private ground: THREE.Mesh; + private helper: THREE.Mesh; + private marker: THREE.Mesh; + + private frameId: number = null; + + private raycaster = new THREE.Raycaster(); + private mouse = new THREE.Vector2(); + + private altitude = 20; + private pitch = -90; + private fov = 94; // P3 diagonal FOV + + public constructor(private ngZone: NgZone, + private gisService: GisService) {} + + public ngOnDestroy() { + if (this.frameId != null) { + cancelAnimationFrame(this.frameId); + } + } + + createScene(canvas: ElementRef): void { + this.canvas = canvas.nativeElement; + + this.renderer = new THREE.WebGLRenderer({ + canvas: this.canvas, + preserveDrawingBuffer: true, + alpha: true, // transparent background + antialias: true // smooth edges + }); + this.renderer.setSize(this.canvas.width, this.canvas.height); + + // create the scene + this.scene = new THREE.Scene(); + + // create the camera + var ratio = this.canvas.width /this.canvas.height; + this.camera = new THREE.PerspectiveCamera( + this.getVertFovDeg(this.fov, ratio), + ratio, + 0.1, + 500 + ); + this.camera.position.y = this.altitude; + this.camera.rotation.x = this.pitch * Math.PI / 180; // pitch angle (randians) + this.scene.add(this.camera); + + // soft white light + this.light = new THREE.AmbientLight( 0x404040 ); + this.light.position.z = 10; + this.scene.add(this.light); + + // ground plane (transparent, just for the intersection) + var geometry = new THREE.PlaneBufferGeometry( 2000, 2000 ); + var material = new THREE.MeshBasicMaterial({ + opacity: 0, + transparent: true, + depthWrite: false }); + this.ground = new THREE.Mesh( geometry, material ); + this.ground.rotation.x = - Math.PI / 2; + this.scene.add( this.ground ); + + // position helper + var coneGeometry = new THREE.ConeBufferGeometry(1, 1, 8); + coneGeometry.rotateX( Math.PI / 2 ); + var helperMaterial = new THREE.MeshNormalMaterial(); + this.helper = new THREE.Mesh( coneGeometry, helperMaterial ); + this.helper.name = "helper"; + this.helper.rotation.x = - Math.PI / 2; + this.scene.add(this.helper); + + // position marker + var markerMaterial = new THREE.MeshBasicMaterial({ + color: 0xff0000 + }); + this.marker = new THREE.Mesh( coneGeometry, markerMaterial ); + this.marker.rotation.x = - Math.PI / 2; + this.marker.name = "marker"; + this.scene.add(this.marker); + + this.canvas.addEventListener( 'mousemove', this.onMouseMove.bind(this), false ); + this.canvas.addEventListener( 'mousedown', this.onMouseDown.bind(this), false); + + // grid helper + this.grid = new THREE.GridHelper( 1000, 100, 0x000000, 0x888888 ); + this.grid.name = "grid"; + this.scene.add( this.grid ); + } + + isPresent(object: any): boolean { + return !!this.scene.getObjectByName(object.name); + } + + onMouseMove( event ) { + if (this.isPresent(this.helper)) { + var intersects = this.getIntersect( event ); + if ( intersects.length > 0 ) { + this.helper.position.copy( intersects[ 0 ].point ); + } + } + } + + onMouseDown( event ) { + if (this.isPresent(this.marker)) { + var intersects = this.getIntersect( event ); + if ( intersects.length > 0 ) { + this.marker.position.copy(intersects[0].point); + this.gisService.getGPS(intersects[0].point.x, intersects[0].point.z); + } + } + } + + getIntersect( event ) { + this.mouse.x = ( (event.offsetX) / this.renderer.domElement.width ) * 2 - 1; + this.mouse.y = - ( (event.offsetY) / this.renderer.domElement.height ) * 2 + 1; + this.raycaster.setFromCamera( this.mouse, this.camera ); + // See if the ray from the camera into the world hits the ground + return(this.raycaster.intersectObject( this.ground )); + } + + animate(): void { + this.ngZone.runOutsideAngular(() => { + if (document.readyState !== 'loading') { + this.render(); + } else { + window.addEventListener('DOMContentLoaded', () => { + this.render(); + }); + } + window.addEventListener('resize', () => { + this.resize(); + }); + }); + } + + render() { + this.frameId = requestAnimationFrame(() => { + this.render(); + }); + this.renderer.render(this.scene, this.camera); + } + + resize() { + const width = this.canvas.width; + const height = this.canvas.height; + var ratio = width / height; + this.camera.aspect = ratio; + this.camera.fov = this.getVertFovDeg(this.fov, ratio); + this.camera.updateProjectionMatrix(); + + this.renderer.setSize( width, height ); + } + + updateGIS(property: string, value: number) { + if (this.isInit()) { + // renderer initialized, we update the scene objects + switch(property) { + case 'altitude': + this.camera.position.y = value; + break; + case 'pitch': + this.camera.rotation.x = value * Math.PI / 180; + break; + case 'fov': + var ratio = this.canvas.width /this.canvas.height; + this.camera.fov = this.getVertFovDeg(value, ratio); + this.camera.updateProjectionMatrix(); + break; + default: + console.log('not a known canvas update property'); + } + } else { + // if renderer not initialized, update default properties + switch(property) { + case 'altitude': + this.altitude = value; + break; + case 'pitch': + this.pitch = value; + break; + case 'fov': + this.fov = value; + break; + default: + console.log('not a known canvas update property'); + } + } + } + + getVertFovDeg(diagFovDeg: number, ratio: number) { + var fov = 2 * Math.atan2(Math.tan(diagFovDeg*Math.PI/180/2), Math.sqrt(1+ratio*ratio)); + return fov*180/Math.PI; + } + + displayGrid(toggle: boolean) { + this.toggleInScene(toggle, this.grid); + } + + displayMarkers(toggle: boolean) { + this.toggleInScene(toggle, this.marker); + this.toggleInScene(toggle, this.helper); + } + + toggleInScene(toggle: boolean, object: any) { + if (toggle) { + if (!this.isPresent(object)) { + this.scene.add(object); + } + } else { + if (this.isPresent(object)) { + this.scene.remove(this.scene.getObjectByName(object.name)); + } + } + } + + isInit() { + return(typeof this.renderer !== "undefined"); + } +} diff --git a/CVERT-ng/src/app/services/file.service.ts b/CVERT-ng/src/app/services/file.service.ts new file mode 100644 index 0000000..095c355 --- /dev/null +++ b/CVERT-ng/src/app/services/file.service.ts @@ -0,0 +1,81 @@ +import { Injectable } from '@angular/core' +import { IpcRenderer } from 'electron' + +import { ImageInstance } from '../classes/imageInstance'; + +@Injectable({ + providedIn: 'root', +}) +export class FileService { + + private ipc: IpcRenderer; + + constructor() { + if ((window).require) { + try { + this.ipc = (window).require('electron').ipcRenderer; + } catch (error) { + throw error; + } + } else { + console.warn('Could not load electron ipc'); + } + } + + async saveImage(image: ImageInstance) { + return new Promise((resolve, reject) => { + this.ipc.send("saveFile", image.uri, image.jimpObject._originalMime); + resolve(); + }); + } + + async saveCanvas(imageUri: string, mime: string) { + return new Promise((resolve, reject) => { + this.ipc.send("saveFile", imageUri, mime); + resolve(); + }); + } + + async saveImageToPath(image: ImageInstance, path: string) { + return new Promise((resolve, reject) => { + this.ipc.send("saveFileToPath", image.uri, image.jimpObject._originalMime, path); + resolve(); + }); + } + + async getOutputDirectory() { + return new Promise((resolve, reject) => { + this.ipc.once('getOutputDirectoryResponse', (event, path) => { + resolve(path); + }); + this.ipc.send('getOutputDirectory'); + }) + } + + async getIntputFiles() { + return new Promise((resolve, reject) => { + this.ipc.once('getInputFilesResponse', (event, path) => { + resolve(path); + }); + this.ipc.send('getInputFiles'); + }) + } + + getAlgorithmParameters(window: string) { + return new Promise((resolve, reject) => { + this.ipc.once('readAlgorithmParametersResponse', (event, algorithmParameters) => { + resolve(algorithmParameters); + }); + this.ipc.send('readAlgorithmParameters', window); + }) + } + + openParameters() { + this.ipc.send('openAlgorithmParametersWindow'); + } + + saveAlgorithmParameters(algorithmParameters: any) { + this.ipc.send('saveAlgorithmParameters', algorithmParameters); + } + +} diff --git a/CVERT-ng/src/app/services/gis.service.ts b/CVERT-ng/src/app/services/gis.service.ts new file mode 100644 index 0000000..9ca4f86 --- /dev/null +++ b/CVERT-ng/src/app/services/gis.service.ts @@ -0,0 +1,46 @@ +import { Injectable } from '@angular/core'; +import * as usgn from 'usng.js'; + +import { GisData } from '../classes/gisData' + +@Injectable({ + providedIn: 'root' +}) +export class GisService { + + gis: GisData; + private radius = 6371000; // earth radius, in m + private converter: any; + + constructor() { } + + setGis(gis: GisData) { + this.gis = gis; + this.converter = new usgn.Converter({}); + } + + getGPS(x: number, y: number) { + // https://www.movable-type.co.uk/scripts/latlong.html + var relHdg = Math.atan2(x, -y); // in rad + var fullHdg = this.gis.heading * Math.PI/180 + relHdg; // in rad + fullHdg = this.unWrap(fullHdg); + var dist = Math.sqrt(x*x + y*y); // in m + var latitude = Math.asin( Math.sin(this.gis.latitude*Math.PI/180)*Math.cos(dist/this.radius) + + Math.cos(this.gis.latitude*Math.PI/180)*Math.sin(dist/this.radius)*Math.cos(fullHdg)); + var longitude = this.gis.longitude*Math.PI/180 + Math.atan2(Math.sin(fullHdg)*Math.sin(dist/this.radius)*Math.cos(this.gis.latitude*Math.PI/180), + Math.cos(dist/this.radius)-Math.sin(this.gis.latitude*Math.PI/180)*Math.sin(latitude)); + this.gis.markerLat = latitude * 180 / Math.PI; + this.gis.markerLon = longitude * 180 / Math.PI; + this.gis.markerUSNG = this.converter.LLtoUSNG(latitude * 180 / Math.PI, longitude * 180 / Math.PI, 5); + } + + unWrap(bearingRad) { + while (bearingRad > Math.PI) { + bearingRad -= 2*Math.PI; + } + while (bearingRad < -Math.PI) { + bearingRad += 2*Math.PI; + } + return bearingRad; + } +} diff --git a/CVERT-ng/src/app/services/server.service.ts b/CVERT-ng/src/app/services/server.service.ts new file mode 100644 index 0000000..5a0b2aa --- /dev/null +++ b/CVERT-ng/src/app/services/server.service.ts @@ -0,0 +1,104 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; + +import { GisData } from '../classes/gisData'; +import { FileService } from '../services/file.service'; + +@Injectable({ + providedIn: 'root', +}) +export class ServerService { + + ip: string; + port: string; + + constructor(private http: HttpClient, + private fileService: FileService) { + this.reset(); + } + + reset() { + this.ip = '127.0.0.1'; + this.port = '5000'; + } + + /*getAssets() { + this.fileService.getAlgorithmParameters().then((jsonParam) => { + console.log(jsonParam); + }); + }*/ + + send(algorithm: any, + sourcePath: string, + targetPath: string) : Promise { + var that = this; + return new Promise(function(resolve, reject) { + that.fileService.getAlgorithmParameters('win').then((jsonParam) => { + // console.log(jsonParam); + let jsonData = that.getJsonFromParam(algorithm, sourcePath, targetPath, jsonParam); + let httpHeaders = new HttpHeaders({ + 'Content-Type' : 'application/json' + }); + let url = 'http://' + that.ip + ':' + that.port; + that.http.post(url, jsonData, {headers: httpHeaders}) + .subscribe((data) => { + // console.log(data); + resolve(data); + }) + }); + }) + } + + sendGPSRequest(sourcePath: string[], + targetPath: string, + gisData: GisData) { + var jsonData = { + "sourcePath": sourcePath, + "targetPath": targetPath, + "gpsTarget": { + "latitude": gisData.markerLat, + "longitude": gisData.markerLon, + "fov": gisData.fov + } + }; + var that = this; + return new Promise(function(resolve, reject) { + let httpHeaders = new HttpHeaders({ + 'Content-Type' : 'application/json' + }); + let url = 'http://' + that.ip + ':' + that.port; + that.http.post(url, jsonData, {headers: httpHeaders}) + .subscribe((data) => { + // console.log(data); + resolve(data); + }) + }); + } + + getJsonFromParam(algorithm: any, + sourcePath: string, + targetPath: string, + jsonData: any) { + var result = { + "algorithm": algorithm, + "sourcePath": sourcePath, + "targetPath": targetPath, + "parameters": this.getAlgoParametersFromJson(jsonData) + } + return result; + } + + getAlgoParametersFromJson(jsonData) { + var result = {}; + for (let param of jsonData) { + if (param.useDefault) { + var value = param.defaultValue; + } else { + var value = param.userValue; + } + result[param.name] = value; + } + return result; + } + +} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/status.log b/CVERT-ng/src/assets/.gitkeep similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/status.log rename to CVERT-ng/src/assets/.gitkeep diff --git a/CVERT-ng/src/assets/algorithmParameters.json b/CVERT-ng/src/assets/algorithmParameters.json new file mode 100644 index 0000000..d07f09c --- /dev/null +++ b/CVERT-ng/src/assets/algorithmParameters.json @@ -0,0 +1,86 @@ +{ + "algorithmParameters" : [{ + "name": "RxThreshold", + "useDefault": true, + "defaultValue": 90, + "userValue": 90 + }, + { + "name": "RxChiThreshold", + "useDefault": true, + "defaultValue": 0.999, + "userValue": 0.999 + }, + { + "name": "LineGaussianIter", + "useDefault": true, + "defaultValue": 0, + "userValue": 0 + }, + { + "name": "LineDilationIter", + "useDefault": true, + "defaultValue": 1, + "userValue": 1 + }, + { + "name": "LineBilatBlurColor", + "useDefault": true, + "defaultValue": 75, + "userValue": 75 + }, + { + "name": "LineBilatBlurSpace", + "useDefault": true, + "defaultValue": 75, + "userValue": 75 + }, + { + "name": "LineCannyEdgeLowerBound", + "useDefault": true, + "defaultValue": 100, + "userValue": 100 + }, + { + "name": "LineCannyEdgeThreshold", + "useDefault": true, + "defaultValue": 140, + "userValue": 140 + }, + { + "name": "CornerGaussianIter", + "useDefault": true, + "defaultValue": 0, + "userValue": 0 + }, + { + "name": "CornerErosionIter", + "useDefault": true, + "defaultValue": 1, + "userValue": 1 + }, + { + "name": "CornerBilateralColor", + "useDefault": true, + "defaultValue": 200, + "userValue": 200 + }, + { + "name": "CornerBilateralSpace", + "useDefault": true, + "defaultValue": 500, + "userValue": 500 + }, + { + "name": "CornerMaxDistance", + "useDefault": true, + "defaultValue": 75, + "userValue": 75 + }, + { + "name": "CornerNumPoints", + "useDefault": true, + "defaultValue": 3, + "userValue": 3 + }] +} diff --git a/CVERT-ng/src/assets/assets.json b/CVERT-ng/src/assets/assets.json new file mode 100644 index 0000000..6baef78 --- /dev/null +++ b/CVERT-ng/src/assets/assets.json @@ -0,0 +1,222 @@ +{ + "filters": [{ + "name": "lighten", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "brighten", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "darken", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "desaturate", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "saturate", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "greyscale", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "hue", + "args": [ + { + "name": "degree", + "type": "number", + "value": 0, + "min": -360, + "max": 360 + } + ] + }, + { + "name": "mix", + "args": [ + { + "name": "color", + "type": "rgb", + "value": "#000000" + }, + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "tint", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "shade", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "xor", + "args": [ + { + "name": "color", + "type": "rgb", + "value": "#000000" + } + ] + }, + { + "name": "red", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "green", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }, + { + "name": "blue", + "args": [ + { + "name": "amount", + "type": "number", + "value": 0, + "min": 0, + "max": 100 + } + ] + }], + + "serverFilters" : [{ + "name": "RXDetector", + "libName": "RXDetector", + "pyFunction": "RXD", + "args": [{"type": "button"}] + }, + { + "name": "DebrisDetect", + "libName": "DXDetector", + "pyFunction": "DebrisDetect", + "args": [{"type": "button"}] + }, + { + "name": "Dehaze", + "libName": "AODNet", + "pyFunction": "Dehaze", + "args": [{"type": "button"}] + }], + + "miscFilters" : [{ + "name": "Histogram", + "args": [ + { + "name": "R", + "type": "range", + "low": 0, + "high": 255, + "min": 0, + "max": 255 + }, + { + "name": "G", + "type": "range", + "low": 0, + "high": 255, + "min": 0, + "max": 255 + }, + { + "name": "B", + "type": "range", + "low": 0, + "high": 255, + "min": 0, + "max": 255 + } + ] + }] +} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Assets/heatmap_legend.jpg b/CVERT-ng/src/assets/heatmap_legend.jpg similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Assets/heatmap_legend.jpg rename to CVERT-ng/src/assets/heatmap_legend.jpg diff --git a/CVERT-ng/src/environments/environment.prod.ts b/CVERT-ng/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/CVERT-ng/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/CVERT-ng/src/environments/environment.ts b/CVERT-ng/src/environments/environment.ts new file mode 100644 index 0000000..7b4f817 --- /dev/null +++ b/CVERT-ng/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/CVERT-ng/src/index.html b/CVERT-ng/src/index.html new file mode 100644 index 0000000..cfbab67 --- /dev/null +++ b/CVERT-ng/src/index.html @@ -0,0 +1,16 @@ + + + + + CVERT-Ng + + + + + + + + + + + diff --git a/CVERT-ng/src/karma.conf.js b/CVERT-ng/src/karma.conf.js new file mode 100644 index 0000000..879e0e6 --- /dev/null +++ b/CVERT-ng/src/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage/CVERT-ng'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/CVERT-ng/src/main.ts b/CVERT-ng/src/main.ts new file mode 100644 index 0000000..0b0b621 --- /dev/null +++ b/CVERT-ng/src/main.ts @@ -0,0 +1,13 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; +import 'hammerjs'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/CVERT-ng/src/polyfills.ts b/CVERT-ng/src/polyfills.ts new file mode 100644 index 0000000..aa665d6 --- /dev/null +++ b/CVERT-ng/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/CVERT-ng/src/styles.scss b/CVERT-ng/src/styles.scss new file mode 100644 index 0000000..58d59bb --- /dev/null +++ b/CVERT-ng/src/styles.scss @@ -0,0 +1,16 @@ +/* You can add global styles to this file, and also import other style files */ + +@import '~bootstrap/dist/css/bootstrap.min.css'; +@import '@angular/material/prebuilt-themes/deeppurple-amber.css'; +// deeppurple-amber.css +// indigo-pink.css +// pink-bluegrey.css +// purple-green.css + +html, body { + height: 100%; +} + +.full-height { + height: 100%; +} diff --git a/CVERT-ng/src/test.ts b/CVERT-ng/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/CVERT-ng/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/CVERT-ng/src/tsconfig.app.json b/CVERT-ng/src/tsconfig.app.json new file mode 100644 index 0000000..1010438 --- /dev/null +++ b/CVERT-ng/src/tsconfig.app.json @@ -0,0 +1,16 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "outDir": "../out-tsc/app", + "types": [ + "node", + "webgl2" + ] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/CVERT-ng/src/tsconfig.spec.json b/CVERT-ng/src/tsconfig.spec.json new file mode 100644 index 0000000..de77336 --- /dev/null +++ b/CVERT-ng/src/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/CVERT-ng/src/tslint.json b/CVERT-ng/src/tslint.json new file mode 100644 index 0000000..aa7c3ee --- /dev/null +++ b/CVERT-ng/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/CVERT-ng/tsconfig.json b/CVERT-ng/tsconfig.json new file mode 100644 index 0000000..be562ba --- /dev/null +++ b/CVERT-ng/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "downlevelIteration": true, + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "module": "esnext", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "importHelpers": true, + "target": "es2015", + "types": [ + "node" + ], + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/CVERT-ng/tslint.json b/CVERT-ng/tslint.json new file mode 100644 index 0000000..add926c --- /dev/null +++ b/CVERT-ng/tslint.json @@ -0,0 +1,75 @@ +{ + "extends": "tslint:recommended", + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-output-on-prefix": true, + "no-inputs-metadata-property": true, + "no-outputs-metadata-property": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-output-rename": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit.sln b/Computer Vision Toolkit/Computer Vision Toolkit.sln deleted file mode 100644 index c095821..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit.sln +++ /dev/null @@ -1,30 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27703.2026 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Computer Vision Toolkit", "Computer Vision Toolkit\Computer Vision Toolkit.csproj", "{58D1E99E-3294-47A4-BE32-ECDBECDEA4BC}" -EndProject -Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{52CE5AB1-9788-47C1-9D48-13EF3133F9E1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {58D1E99E-3294-47A4-BE32-ECDBECDEA4BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {58D1E99E-3294-47A4-BE32-ECDBECDEA4BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {58D1E99E-3294-47A4-BE32-ECDBECDEA4BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {58D1E99E-3294-47A4-BE32-ECDBECDEA4BC}.Release|Any CPU.Build.0 = Release|Any CPU - {52CE5AB1-9788-47C1-9D48-13EF3133F9E1}.Debug|Any CPU.ActiveCfg = Debug - {52CE5AB1-9788-47C1-9D48-13EF3133F9E1}.Release|Any CPU.ActiveCfg = Release - {52CE5AB1-9788-47C1-9D48-13EF3133F9E1}.Release|Any CPU.Build.0 = Release - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {9F8C313E-446E-4864-9ADD-13E1B7FCDEC3} - EndGlobalSection -EndGlobal diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.Designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.Designer.cs deleted file mode 100644 index 86dd3ad..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.Designer.cs +++ /dev/null @@ -1,196 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class AboutBox - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox)); - this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); - this.logoPictureBox = new System.Windows.Forms.PictureBox(); - this.labelProductName = new System.Windows.Forms.Label(); - this.labelVersion = new System.Windows.Forms.Label(); - this.labelCopyright = new System.Windows.Forms.Label(); - this.labelCompanyName = new System.Windows.Forms.Label(); - this.textBoxDescription = new System.Windows.Forms.TextBox(); - this.okButton = new System.Windows.Forms.Button(); - this.tableLayoutPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); - this.SuspendLayout(); - // - // tableLayoutPanel - // - this.tableLayoutPanel.ColumnCount = 2; - this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F)); - this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F)); - this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0); - this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0); - this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1); - this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2); - this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3); - this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4); - this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5); - this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel.Location = new System.Drawing.Point(14, 12); - this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(4); - this.tableLayoutPanel.Name = "tableLayoutPanel"; - this.tableLayoutPanel.RowCount = 6; - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); - this.tableLayoutPanel.Size = new System.Drawing.Size(624, 368); - this.tableLayoutPanel.TabIndex = 0; - // - // logoPictureBox - // - this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); - this.logoPictureBox.Location = new System.Drawing.Point(4, 4); - this.logoPictureBox.Margin = new System.Windows.Forms.Padding(4); - this.logoPictureBox.Name = "logoPictureBox"; - this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6); - this.logoPictureBox.Size = new System.Drawing.Size(197, 360); - this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.logoPictureBox.TabIndex = 12; - this.logoPictureBox.TabStop = false; - // - // labelProductName - // - this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelProductName.Location = new System.Drawing.Point(214, 0); - this.labelProductName.Margin = new System.Windows.Forms.Padding(9, 0, 4, 0); - this.labelProductName.MaximumSize = new System.Drawing.Size(0, 24); - this.labelProductName.Name = "labelProductName"; - this.labelProductName.Size = new System.Drawing.Size(406, 24); - this.labelProductName.TabIndex = 19; - this.labelProductName.Text = "Product Name"; - this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.labelProductName.UseMnemonic = false; - // - // labelVersion - // - this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelVersion.Location = new System.Drawing.Point(214, 36); - this.labelVersion.Margin = new System.Windows.Forms.Padding(9, 0, 4, 0); - this.labelVersion.MaximumSize = new System.Drawing.Size(0, 24); - this.labelVersion.Name = "labelVersion"; - this.labelVersion.Size = new System.Drawing.Size(406, 24); - this.labelVersion.TabIndex = 0; - this.labelVersion.Text = "Version"; - this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.labelVersion.UseMnemonic = false; - // - // labelCopyright - // - this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelCopyright.Location = new System.Drawing.Point(214, 72); - this.labelCopyright.Margin = new System.Windows.Forms.Padding(9, 0, 4, 0); - this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 24); - this.labelCopyright.Name = "labelCopyright"; - this.labelCopyright.Size = new System.Drawing.Size(406, 24); - this.labelCopyright.TabIndex = 21; - this.labelCopyright.Text = "Copyright"; - this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.labelCopyright.UseMnemonic = false; - // - // labelCompanyName - // - this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill; - this.labelCompanyName.Location = new System.Drawing.Point(214, 108); - this.labelCompanyName.Margin = new System.Windows.Forms.Padding(9, 0, 4, 0); - this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 24); - this.labelCompanyName.Name = "labelCompanyName"; - this.labelCompanyName.Size = new System.Drawing.Size(406, 24); - this.labelCompanyName.TabIndex = 22; - this.labelCompanyName.Text = "Company Name"; - this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - this.labelCompanyName.UseMnemonic = false; - // - // textBoxDescription - // - this.textBoxDescription.AcceptsReturn = true; - this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; - this.textBoxDescription.Location = new System.Drawing.Point(214, 148); - this.textBoxDescription.Margin = new System.Windows.Forms.Padding(9, 4, 4, 4); - this.textBoxDescription.Multiline = true; - this.textBoxDescription.Name = "textBoxDescription"; - this.textBoxDescription.ReadOnly = true; - this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.textBoxDescription.Size = new System.Drawing.Size(406, 176); - this.textBoxDescription.TabIndex = 23; - this.textBoxDescription.TabStop = false; - this.textBoxDescription.Text = "Description"; - // - // okButton - // - this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.okButton.Location = new System.Drawing.Point(508, 332); - this.okButton.Margin = new System.Windows.Forms.Padding(4); - this.okButton.Name = "okButton"; - this.okButton.Size = new System.Drawing.Size(112, 32); - this.okButton.TabIndex = 24; - this.okButton.Text = "&OK"; - // - // AboutBox - // - this.AcceptButton = this.okButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(652, 392); - this.Controls.Add(this.tableLayoutPanel); - this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Margin = new System.Windows.Forms.Padding(4); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "AboutBox"; - this.Padding = new System.Windows.Forms.Padding(14, 12, 14, 12); - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "AboutBox"; - this.tableLayoutPanel.ResumeLayout(false); - this.tableLayoutPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel; - private System.Windows.Forms.PictureBox logoPictureBox; - private System.Windows.Forms.Label labelProductName; - private System.Windows.Forms.Label labelVersion; - private System.Windows.Forms.Label labelCopyright; - private System.Windows.Forms.Label labelCompanyName; - private System.Windows.Forms.TextBox textBoxDescription; - private System.Windows.Forms.Button okButton; - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.cs b/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.cs deleted file mode 100644 index 9fe441b..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Drawing; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace Computer_Vision_Toolkit -{ - partial class AboutBox : Form - { - public AboutBox() - { - InitializeComponent(); - this.Text = String.Format("About {0}", AssemblyTitle); - this.labelProductName.Text = AssemblyProduct; - this.labelVersion.Text = String.Format("Version {0}", AssemblyVersion); - this.labelCopyright.Text = AssemblyCopyright; - this.labelCompanyName.Text = AssemblyCompany; - this.textBoxDescription.Text = AssemblyDescription; - } - - #region Assembly Attribute Accessors - - public string AssemblyTitle - { - get - { - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); - if (attributes.Length > 0) - { - AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; - if (titleAttribute.Title != "") - { - return titleAttribute.Title; - } - } - return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); - } - } - - public string AssemblyVersion - { - get - { - return Assembly.GetExecutingAssembly().GetName().Version.ToString(); - } - } - - public string AssemblyDescription - { - get - { - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); - if (attributes.Length == 0) - { - return ""; - } - return ((AssemblyDescriptionAttribute)attributes[0]).Description; - } - } - - public string AssemblyProduct - { - get - { - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); - if (attributes.Length == 0) - { - return ""; - } - return ((AssemblyProductAttribute)attributes[0]).Product; - } - } - - public string AssemblyCopyright - { - get - { - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); - if (attributes.Length == 0) - { - return ""; - } - return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; - } - } - - public string AssemblyCompany - { - get - { - object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); - if (attributes.Length == 0) - { - return ""; - } - return ((AssemblyCompanyAttribute)attributes[0]).Company; - } - } - #endregion - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.resx b/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.resx deleted file mode 100644 index 5a80eff..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/AboutBox.resx +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.Designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.Designer.cs deleted file mode 100644 index c7e445a..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.Designer.cs +++ /dev/null @@ -1,196 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class AlgorithmsForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AlgorithmsForm)); - this.paramData = new System.Windows.Forms.DataGridView(); - this.Algorithm = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Pipe = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.UseChkBox = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.Order = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.btnCancel = new System.Windows.Forms.Button(); - this.btnSave = new System.Windows.Forms.Button(); - this.saveStatus = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.paramData)).BeginInit(); - this.SuspendLayout(); - // - // paramData - // - this.paramData.AllowUserToAddRows = false; - this.paramData.AllowUserToDeleteRows = false; - this.paramData.AllowUserToResizeRows = false; - this.paramData.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.paramData.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - this.paramData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.paramData.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.Algorithm, - this.Pipe, - this.UseChkBox, - this.Order}); - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.paramData.DefaultCellStyle = dataGridViewCellStyle4; - this.paramData.Location = new System.Drawing.Point(12, 13); - this.paramData.MultiSelect = false; - this.paramData.Name = "paramData"; - dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.paramData.RowHeadersDefaultCellStyle = dataGridViewCellStyle5; - this.paramData.RowHeadersVisible = false; - this.paramData.Size = new System.Drawing.Size(757, 398); - this.paramData.TabIndex = 6; - this.paramData.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.paramData_CellContentClick); - // - // Algorithm - // - this.Algorithm.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.Algorithm.DefaultCellStyle = dataGridViewCellStyle2; - this.Algorithm.FillWeight = 40F; - this.Algorithm.HeaderText = "Algorithm"; - this.Algorithm.Name = "Algorithm"; - this.Algorithm.ReadOnly = true; - // - // Pipe - // - this.Pipe.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.Pipe.FillWeight = 15F; - this.Pipe.HeaderText = "Pipe"; - this.Pipe.Name = "Pipe"; - // - // UseChkBox - // - this.UseChkBox.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.UseChkBox.FillWeight = 15F; - this.UseChkBox.HeaderText = "Use"; - this.UseChkBox.Name = "UseChkBox"; - // - // Order - // - this.Order.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; - this.Order.DefaultCellStyle = dataGridViewCellStyle3; - this.Order.FillWeight = 25F; - this.Order.HeaderText = "Order (Ex: 0, 1, 2, 3 ...)"; - this.Order.Name = "Order"; - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnCancel.Location = new System.Drawing.Point(656, 428); - this.btnCancel.Margin = new System.Windows.Forms.Padding(4); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(112, 32); - this.btnCancel.TabIndex = 5; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); - // - // btnSave - // - this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnSave.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnSave.Location = new System.Drawing.Point(536, 428); - this.btnSave.Margin = new System.Windows.Forms.Padding(4); - this.btnSave.Name = "btnSave"; - this.btnSave.Size = new System.Drawing.Size(112, 32); - this.btnSave.TabIndex = 4; - this.btnSave.Text = "Save"; - this.btnSave.UseVisualStyleBackColor = true; - this.btnSave.Click += new System.EventHandler(this.btnSave_Click); - // - // saveStatus - // - this.saveStatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.saveStatus.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.saveStatus.Location = new System.Drawing.Point(12, 432); - this.saveStatus.Name = "saveStatus"; - this.saveStatus.Size = new System.Drawing.Size(517, 25); - this.saveStatus.TabIndex = 7; - this.saveStatus.Text = "Save Status"; - this.saveStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // AlgorithmsForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(781, 472); - this.Controls.Add(this.paramData); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnSave); - this.Controls.Add(this.saveStatus); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "AlgorithmsForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Select Algorithms"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ParametersForm_FormClosing); - ((System.ComponentModel.ISupportInitialize)(this.paramData)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.DataGridView paramData; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Button btnSave; - private System.Windows.Forms.Label saveStatus; - private System.Windows.Forms.DataGridViewTextBoxColumn Algorithm; - private System.Windows.Forms.DataGridViewCheckBoxColumn Pipe; - private System.Windows.Forms.DataGridViewCheckBoxColumn UseChkBox; - private System.Windows.Forms.DataGridViewTextBoxColumn Order; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.cs b/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.cs deleted file mode 100644 index 96174e2..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.cs +++ /dev/null @@ -1,162 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using SystemLog; - -namespace Computer_Vision_Toolkit -{ - public partial class AlgorithmsForm : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - public List paramList = new List(); - public bool saved_changes = true; - - - public AlgorithmsForm() - { - InitializeComponent(); - - //Read the parameters.ini file and load into form - Read(); - saveStatus.Text = "Saved..."; - } - - - //Read the parameters.ini file - private void Read() - { - try - { - string[] entries = File.ReadAllLines(@"lib\algorithms.ini"); - foreach (string str in entries) - { - //Skip comment lines - if (str.StartsWith("#")) continue; - - //Remove any remaining comment sections - string p_str = str.Split('#')[0]; - - string[] opt = p_str.Split('='); //name=pipe=use=order - paramData.Rows.Add(opt[0], Convert.ToInt32(opt[1]), Convert.ToInt32(opt[2]), Convert.ToInt32(opt[3])); - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //Save to the parameters.ini file - private void Save() - { - try - { - paramList.Clear(); - if (paramData.Rows.Count > 0) - { - //Create array of strings - foreach (DataGridViewRow row in paramData.Rows) - { - paramList.Add(row.Cells[0].Value + "=" + Convert.ToInt32(row.Cells[1].Value).ToString() + "=" + Convert.ToInt32(row.Cells[2].Value).ToString() + "=" + Convert.ToInt32(row.Cells[3].Value).ToString()); - } - - //Write string array to file - File.WriteAllLines(@"lib\algorithms.ini", paramList.ToArray()); - } - - saved_changes = true; - saveStatus.Text = "Saved..."; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - private void btnSave_Click(object sender, EventArgs e) - { - Save(); - this.Close(); - } - - private void btnCancel_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void ParametersForm_FormClosing(object sender, FormClosingEventArgs e) - { - //Last chance to save - if (!saved_changes) - { - if (MessageBox.Show("Any unsaved changes will be lost. Would you like to save before exitting?", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - Save(); - } - } - - private void paramData_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - //Something was changed - saved_changes = false; - saveStatus.Text = "Not Saved..."; - } - - - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.resx b/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.resx deleted file mode 100644 index d28c2ba..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/AlgorithmsForm.resx +++ /dev/null @@ -1,693 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - True - - - - - AAABAAUAEBAAAAAAIABoBAAAVgAAABgYAAAAACAAiAkAAL4EAAAgIAAAAAAgAKgQAABGDgAAMDAAAAAA - IACoJQAA7h4AAA0NAAAAAAANrT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/App.config b/Computer Vision Toolkit/Computer Vision Toolkit/App.config deleted file mode 100644 index 731f6de..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Computer Vision Toolkit.csproj b/Computer Vision Toolkit/Computer Vision Toolkit/Computer Vision Toolkit.csproj deleted file mode 100644 index 7e3aff9..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Computer Vision Toolkit.csproj +++ /dev/null @@ -1,218 +0,0 @@ - - - - - Debug - AnyCPU - {58D1E99E-3294-47A4-BE32-ECDBECDEA4BC} - WinExe - Computer_Vision_Toolkit - CVER Toolkit - v4.6.1 - 512 - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - - - lib\Assets\icon.ico - - - - - - - - - - - - - - - - - Form - - - AboutBox.cs - - - Form - - - AlgorithmsForm.cs - - - Form - - - batchName.cs - - - Form - - - MainForm.cs - - - Form - - - ParametersForm.cs - - - Form - - - ProcessForm.cs - - - - - Form - - - PythonCheckForm.cs - - - Form - - - resultDialog.cs - - - - AboutBox.cs - - - AlgorithmsForm.cs - - - batchName.cs - - - MainForm.cs - - - ParametersForm.cs - - - ProcessForm.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - - - PythonCheckForm.cs - - - resultDialog.cs - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - Always - - - - - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/LICENSE.txt b/Computer Vision Toolkit/Computer Vision Toolkit/LICENSE.txt deleted file mode 100644 index 5e66372..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/LICENSE.txt +++ /dev/null @@ -1,31 +0,0 @@ - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - -Copyright (c) 2018, Texas A&M Engineering Experiment Station -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 the copyright holder 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 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/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.cs b/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.cs deleted file mode 100644 index dbe946e..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.cs +++ /dev/null @@ -1,1295 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; - -using SystemLog; - - -namespace Computer_Vision_Toolkit -{ - - //Global Settings - public struct Settings //NOTE: THIS NEEDS TO BE CONVERTED TO USING THE NATIVE SETTINGS MANAGER WITHIN C# APPLICATIONS - { - public bool FirstRun; - public bool RunPOST; - public string PythonPath; - public string BatchesPath; - public string LibPath; - public bool NewImageWindow; - public bool AllowMultiThread; - - } - - - public partial class MainForm : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - //NOTE: "settings.ini" NEEDS TO BE CONVERTED TO USING THE NATIVE SETTINGS MANAGER WITHIN C# APPLICATIONS - //Settings - public Settings settings = new Settings(); //Values read from the 'settings.ini' - public string settingsPath = @"settings.ini"; - - //Result viewing variables - public string selectResultsFolder = ""; - public List currentImages = new List(); - public List checked_images = new List(); - public List flagged_images = new List(); - public List image_stats = new List(); - public int previousSelectedIndex = 0; - public bool allow_checked = false; - - public Process proc_img1; - public Process proc_img2; - - public bool pbox1_left = false; - public bool pbox2_left = false; - public bool pbox1_right = false; - public bool pbox2_right = false; - - public Color centerColor = Color.FromArgb(0, 0, 0, 0); - public Color[] colors = { Color.FromArgb(255, 0, 0, 0) }; - public SolidBrush brush = new SolidBrush(Color.FromArgb(150, 0, 0, 0)); - public GraphicsPath path = new GraphicsPath(); - public Graphics g1; - public Graphics g2; - - //Mouse location - public int mouse_x; - public int mouse_y; - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public MainForm() - { - InitializeComponent(); - - //Read settings.ini - ReadSettings(); - - if( settings.FirstRun || settings.RunPOST ) POST(); - - //Update settings.ini - UpdateSettings(); - - } - - //=================================================================================================================== - //------------------------------------------------Read Settings File------------------------------------------------- - //=================================================================================================================== - - private void ReadSettings() //NOTE: THIS NEEDS TO BE CONVERTED TO USING THE NATIVE SETTINGS MANAGER WITHIN C# APPLICATIONS - { - try - { - string[] entries = File.ReadAllLines(settingsPath); - - foreach (string str in entries) - { - string[] opt = str.Split('='); - switch (opt[0]) - { - case "FirstRun": - { - settings.FirstRun = (!string.IsNullOrEmpty(opt[1])) ? Convert.ToBoolean(opt[1]) : true; - - //TODO***RESET ALL PATH STRINGS - - break; - } - - case "RunPOST": - { - settings.RunPOST = (!string.IsNullOrEmpty(opt[1])) ? Convert.ToBoolean(opt[1]) : false; - break; - } - - case "PythonPath": - { - settings.PythonPath = opt[1]; - - if (string.IsNullOrEmpty(settings.PythonPath) || !File.Exists(settings.PythonPath)) - { - settings.FirstRun = true; - - } - break; - } - - case "BatchesPath": - { - settings.BatchesPath = opt[1]; - if (string.IsNullOrEmpty(settings.BatchesPath) || !File.Exists(settings.BatchesPath)) - { - //settings.BatchesPath = Path.Combine(Environment.CurrentDirectory, "Batches"); - settings.BatchesPath = Environment.ExpandEnvironmentVariables(@"%userprofile%\Documents\Computer Vision Emergency Response Toolkit\Batches"); - } - break; - } - case "LibPath": - { - settings.LibPath = opt[1]; - if (string.IsNullOrEmpty(settings.LibPath) || !File.Exists(settings.LibPath)) - { - settings.LibPath = Path.Combine(Environment.CurrentDirectory, "lib"); - } - break; - } - - case "NewImageWindow": - { - //settings.NewImageWindow = (!string.IsNullOrEmpty(opt[1])) ? Convert.ToBoolean(opt[1]) : false; - //this.checkBoxNewWindow.Checked = settings.NewImageWindow; - - break; - } - - case "AllowMultiThread": - { - settings.AllowMultiThread = (!string.IsNullOrEmpty(opt[1])) ? Convert.ToBoolean(opt[1]) : false; - menuOptimizedMode.Text = (settings.AllowMultiThread) ? "Optimized for: Analysis" : "Optimized for: Viewing"; - break; - } - - default: - { - break; - } - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------------Update Settings File------------------------------------------------ - //=================================================================================================================== - - //Update the settings.ini - private void UpdateSettings() //NOTE: THIS NEEDS TO BE CONVERTED TO USING THE NATIVE SETTINGS MANAGER WITHIN C# APPLICATIONS - { - try - { - //string[] output = { settings.FirstRun.ToString(), settings.PythonPath, settings.BatchesPath, settings.BinPath }; - File.WriteAllLines(settingsPath, - new string[]{ - "FirstRun=" + settings.FirstRun.ToString(), - "RunPOST=" + settings.RunPOST.ToString(), - "PythonPath=" + settings.PythonPath, - "BatchesPath=" + settings.BatchesPath, - "LibPath=" + settings.LibPath, - "AllowMultiThread=" + settings.AllowMultiThread - }); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------------Read Checkbox File-------------------------------------------------- - //=================================================================================================================== - - //Reads the checkbox.ini found in each batch folder - private List ReadCheckbox(string batch) - { - List str = new List(); - try - { - str = File.ReadAllLines(batch + @"\checkbox.ini").ToList(); - return str; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - return str; - } - } - - //=================================================================================================================== - //----------------------------------------------Update Checkbox File------------------------------------------------- - //=================================================================================================================== - - //Updates the checkbox.ini found in each batch folder - private void UpdateCheckbox(string batch, string[] str) - { - try - { - //If the file does not exist, create it - if (!File.Exists(batch + @"\checkbox.ini")) File.Create(batch + @"\checkbox.ini").Close(); - - File.WriteAllLines(batch + @"\checkbox.ini", str); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - - //=================================================================================================================== - //-----------------------------------------------Read Flagged File-------------------------------------------------- - //=================================================================================================================== - - //Reads the checkbox.ini found in each batch folder - private List ReadFlagged(string batch) - { - List str = new List(); - try - { - //If the file does not exist, create it - if (!File.Exists(batch + @"\flagged.ini")) File.Create(batch + @"\flagged.ini").Close(); - - str = File.ReadAllLines(batch + @"\flagged.ini").ToList(); - return str; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - return str; - } - } - - //=================================================================================================================== - //----------------------------------------------Update Flagged File------------------------------------------------- - //=================================================================================================================== - - //Updates the flagged.ini found in each batch folder - private void UpdateFlagged(string batch, string[] str) - { - try - { - //If the file does not exist, create it - if(!File.Exists(batch + @"\flagged.ini")) File.Create(batch + @"\flagged.ini").Close(); - File.WriteAllLines(batch + @"\flagged.ini", str); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //--------------------------------------------Convert String To Color------------------------------------------------ - //=================================================================================================================== - - private Color StringToColor(string str) - { - try - { - switch(str) - { - case "Red": return Color.Red; - case "Orange": return Color.Orange; - case "Yellow": return Color.Yellow; - case "Green": return Color.Green; - case "Blue": return Color.Blue; - case "Purple": return Color.Purple; - case "Gray": return Color.Gray; - - default: return Color.White; - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - return Color.White; - } - } - - - //=================================================================================================================== - //-----------------------------------------------Read Stats File-------------------------------------------------- - //=================================================================================================================== - - //Reads the detected_log.txt found in each batch folder - private List ReadImageStats(string batch) - { - List str = new List(); - try - { - str = File.ReadAllLines(batch + @"\detected_log.txt").ToList(); - return str; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - return str; - } - } - - //=================================================================================================================== - //-----------------------------------------------------POST---------------------------------------------------------- - //=================================================================================================================== - - //Power On Self Test - private void POST() - { - try - { - //Disable button while the program checks for python - menuBtnNewAnalysis.Enabled = false; - - PythonCheckForm py = new PythonCheckForm(settings); - py.ShowDialog(); - settings = py.GetSettings(); - - //Test if python is installed - if (py.DialogResult == DialogResult.No) - { - menuBtnNewAnalysis.Enabled = false; - btnNewAnalysis.Enabled = false; - settings.FirstRun = true; - } - else - { - menuBtnNewAnalysis.Enabled = true; - btnNewAnalysis.Enabled = true; - settings.FirstRun = false; - } - - UpdateSettings(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //---------------------------------------------------Display Images-------------------------------------------------- - //=================================================================================================================== - - private void displayImages(bool use_window) - { - try - { - string[] extensions = { "jpeg", "jpg", "png" }; - - //Display initial image in list - if (!use_window) - { - - //find image with selected checkbox item and show it in pictureBoxes - foreach (var ext in extensions) - { - if (dataGridView1.SelectedRows != null && checkImages(Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext), 1) == true) - { - pictureBox2.ImageLocation = Path.Combine(selectResultsFolder, "Analyzed", Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext)); - break; - } - else - pictureBox2.ImageLocation = ""; - } - - foreach (var ext in extensions) - { - if (dataGridView1.SelectedRows != null && checkImages(Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext), 0) == true) - { - pictureBox1.ImageLocation = Path.Combine(selectResultsFolder, "Original", Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext)); - break; - } - else - pictureBox1.ImageLocation = ""; - } - - pictureBox1.Update(); - pictureBox2.Update(); - - g1 = Graphics.FromImage(pictureBox1.Image); - g2 = Graphics.FromImage(pictureBox2.Image); - path.Reset(); - - } - else - { - - //Find the file of the selected image and show the image in its own window - foreach (var ext in extensions) - if (dataGridView1.SelectedRows != null && checkImages(Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext), 1) == true) - { - Process.Start(Path.Combine(selectResultsFolder, "Analyzed", Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext))); - } - - foreach (var ext in extensions) - if (dataGridView1.SelectedRows != null && checkImages(Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext), 0) == true) - { - Process.Start(Path.Combine(selectResultsFolder, "Original", Path.ChangeExtension(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString(), ext))); - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-------------------------------------------------Analysis Button Click--------------------------------------------- - //=================================================================================================================== - - private void menuBtnNewAnalysis_Click(object sender, EventArgs e) - { - try - { - ProcessForm proc_form = new ProcessForm(settings); - proc_form.Show(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-------------------------------------------------Results Button Click---------------------------------------------- - //=================================================================================================================== - - private void menuBtnSelectResults_Click(object sender, EventArgs e) - { - try - { - - resultDialog results = new resultDialog(settings); - results.ShowDialog(); - - if (results.DialogResult == DialogResult.OK && !string.IsNullOrEmpty(results.getSelected())) - { - pictureBox1.ImageLocation = ""; - pictureBox2.ImageLocation = ""; - previousSelectedIndex = 0; - - selectResultsFolder = results.getSelected(); - - //Update form title to the path of the batch being viewed - this.Text = selectResultsFolder; - - //Load the detected images - this.loadImages(); - - //Allows the user to view a batch folder that is currently being analyzed - FileSystemWatcher watcher = new FileSystemWatcher(Path.Combine(selectResultsFolder, "Analyzed")); - watcher.EnableRaisingEvents = true; - watcher.NotifyFilter = NotifyFilters.LastWrite; - //watcher.Created += Watcher_Created; - watcher.Changed += Watcher_Changed; - - //Display currently selected images - displayImages(false); - - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------------Watcher File Changed------------------------------------------------ - //=================================================================================================================== - - private void Watcher_Changed(object sender, FileSystemEventArgs e) - { - try - { - //Calls the method with the thread that owns the UI object - Invoke((MethodInvoker)(() => updateImages())); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------------Watcher File Created------------------------------------------------ - //=================================================================================================================== - - private void Watcher_Created(object sender, FileSystemEventArgs e) - { - try - { - //Calls the method with the thread that owns the UI object - Invoke((MethodInvoker)(() => updateImages())); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - - //=================================================================================================================== - //--------------------------------------------Selected Index Changed------------------------------------------------- - //=================================================================================================================== - - private void dataGridView1_SelectionChanged(object sender, EventArgs e) - { - try - { - displayImages(false); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //---------------------------------------------------Check Images---------------------------------------------------- - //=================================================================================================================== - - private bool checkImages(string image, int val) - { - if(val == 0) - return (File.Exists(Path.Combine(selectResultsFolder, "Original", image))); - if(val == 1) - return (File.Exists(Path.Combine(selectResultsFolder, "Analyzed", image))); - - return false; - } - - //=================================================================================================================== - //---------------------------------------------Load Images from Folder----------------------------------------------- - //=================================================================================================================== - - private void loadImages() - { - try - { - //Read the checkbox.ini - checked_images = ReadCheckbox(selectResultsFolder); - flagged_images = ReadFlagged(selectResultsFolder); - image_stats = ReadImageStats(selectResultsFolder); - - String combined = System.IO.Path.Combine(selectResultsFolder, "Analyzed"); - string[] temp = Directory.GetFiles(combined); - - //Reset current images and checkbox - currentImages.Clear(); - dataGridView1.Rows.Clear(); - - //Ensure images have results and are of right format - for (int i = 0; i < temp.Length; i++) - if (temp[i].ToLower().EndsWith(".jpg") || temp[i].ToLower().EndsWith(".jpeg") || temp[i].ToLower().EndsWith(".png")) - currentImages.Add(Path.GetFileName(temp[i])); - - - for (int i=0; i < currentImages.Count; i++) - { - string stat = image_stats.Find((string x) => x.Contains( Path.GetFileNameWithoutExtension(currentImages[i]) )); - double image_score = ( !string.IsNullOrEmpty(stat) ) ? Convert.ToDouble( stat.Split(' ').Last() ) : 0.0d; - - - //Create row for dataGridView - dataGridView1.Rows.Add( "", "No", currentImages[i], image_score.ToString("N10")); - dataGridView1.Rows[i].Cells["Checked"].Style.BackColor = Color.White; - dataGridView1.Rows[i].Cells["Image"].Style.BackColor = Color.White; - dataGridView1.Rows[i].Cells["Score"].Style.BackColor = Color.White; - dataGridView1.Rows[i].Cells["Flag"].Style.ForeColor = Color.White; - dataGridView1.Rows[i].Cells["Flag"].Style.BackColor = Color.White; - dataGridView1.Rows[i].Cells["Flag"].Style.SelectionBackColor = Color.FromKnownColor(KnownColor.Highlight); - dataGridView1.Rows[i].Cells["Flag"].Style.SelectionForeColor = Color.FromKnownColor(KnownColor.Highlight); - - //Checks previously checked images - if (checked_images.Contains(dataGridView1.Rows[i].Cells["Image"].Value)) - { - dataGridView1.Rows[i].Cells["Checked"].Value = "Yes"; - dataGridView1.Rows[i].Cells["Checked"].Style.BackColor = Color.LightBlue; - dataGridView1.Rows[i].Cells["Image"].Style.BackColor = Color.LightBlue; - dataGridView1.Rows[i].Cells["Score"].Style.BackColor = Color.LightBlue; - } - - //Check previously flagged images - if (flagged_images.Any((string x) => x.Split('=')[0].Contains(dataGridView1.Rows[i].Cells["Image"].Value.ToString()))) - { - string color_str = flagged_images.Find((string x) => x.Contains(dataGridView1.Rows[i].Cells["Image"].Value.ToString()) ).Split('=')[1]; - - //Switch for the various colors - dataGridView1.Rows[i].Cells["Flag"].Value = color_str; - dataGridView1.Rows[i].Cells["Flag"].Style.BackColor = StringToColor(color_str); - dataGridView1.Rows[i].Cells["Flag"].Style.ForeColor = StringToColor(color_str); - dataGridView1.Rows[i].Cells["Flag"].Style.SelectionBackColor = StringToColor(color_str); - dataGridView1.Rows[i].Cells["Flag"].Style.SelectionForeColor = StringToColor(color_str); - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------------Update Image List--------------------------------------------------- - //=================================================================================================================== - - private void updateImages() - { - try - { - String combined = System.IO.Path.Combine(selectResultsFolder, "Analyzed"); - string[] temp = Directory.GetFiles(combined); - - //Update image stats - image_stats = ReadImageStats(selectResultsFolder); - - //Ensure images have results and are of right format - for (int i = 0; i < temp.Length; i++) - { - if (temp[i].ToLower().EndsWith(".jpg") || temp[i].ToLower().EndsWith(".jpeg") || temp[i].ToLower().EndsWith(".png")) - { - if(!currentImages.Contains(Path.GetFileName(temp[i]))) - { - currentImages.Add(Path.GetFileName(temp[i])); - - //Add the new image to the dataGridView - string stat = image_stats.Find((string x) => x.Contains(Path.GetFileNameWithoutExtension( currentImages.Last() ))); - double image_score = (!string.IsNullOrEmpty(stat)) ? Convert.ToDouble(stat.Split(' ')[3]) : 0.0d; - - - dataGridView1.Rows.Add( "", "No", currentImages.Last(), image_score.ToString()); - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Checked"].Style.BackColor = Color.White; - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Image"].Style.BackColor = Color.White; - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Score"].Style.BackColor = Color.White; - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Flag"].Style.BackColor = Color.White; - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Flag"].Style.ForeColor = Color.White; - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Flag"].Style.SelectionBackColor = Color.FromKnownColor(KnownColor.Highlight); - dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Flag"].Style.SelectionForeColor = Color.FromKnownColor(KnownColor.Highlight); - } - } - } - - dataGridView1.Update(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //---------------------------------------------Edit Parameters Clicked----------------------------------------------- - //=================================================================================================================== - - private void editParametersToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - ParametersForm pf = new ParametersForm(); - pf.ShowDialog(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //--------------------------------------------View Optimization Clicked---------------------------------------------- - //=================================================================================================================== - - private void viewingToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - settings.AllowMultiThread = false; - menuOptimizedMode.Text = "Optimized for: Viewing"; - UpdateSettings(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------Analysis Optimization Clicked--------------------------------------------- - //=================================================================================================================== - - private void analysisToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - settings.AllowMultiThread = true; - menuOptimizedMode.Text = "Optimized for: Analysis"; - UpdateSettings(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //---------------------------------------Open Image in New Window Clicked-------------------------------------------- - //=================================================================================================================== - - private void openImagesInNewWindowToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - displayImages(true); - dataGridView1.Focus(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //----------------------------------------------Mark Image as Viewed------------------------------------------------- - //=================================================================================================================== - - private void btnMarkAsViewed_Click(object sender, EventArgs e) - { - try - { - if (dataGridView1.Rows.Count > 0 && dataGridView1.SelectedRows.Count > 0) - { - if( dataGridView1.SelectedRows[0].Cells["Checked"].Value.Equals("No") ) - { - if (!checked_images.Contains(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString())) - checked_images.Add(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString()); - - //Update dataGridView - dataGridView1.SelectedRows[0].Cells["Checked"].Value = "Yes"; - dataGridView1.SelectedRows[0].Cells["Checked"].Style.BackColor = Color.LightBlue; - dataGridView1.SelectedRows[0].Cells["Image"].Style.BackColor = Color.LightBlue; - dataGridView1.SelectedRows[0].Cells["Score"].Style.BackColor = Color.LightBlue; - - //Update the checkbox.ini - UpdateCheckbox(selectResultsFolder, checked_images.ToArray()); - } - else - { - checked_images.Remove(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString()); - - //Update dataGridView - dataGridView1.SelectedRows[0].Cells["Checked"].Value = "No"; - dataGridView1.SelectedRows[0].Cells["Checked"].Style.BackColor = Color.White; - dataGridView1.SelectedRows[0].Cells["Image"].Style.BackColor = Color.White; - dataGridView1.SelectedRows[0].Cells["Score"].Style.BackColor = Color.White; - - //Update the checkbox.ini - UpdateCheckbox(selectResultsFolder, checked_images.ToArray()); - } - } - - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //=================================================================================================================== - //----------------------------------------------Mark Image as Flagged------------------------------------------------ - //=================================================================================================================== - - private void MarkAsFlagged() - { - try - { - if (dataGridView1.Rows.Count > 0 && dataGridView1.SelectedRows.Count > 0) - { - if (flagged_images.Any((string x) => x.Split('=')[0].Contains(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString()))) - { - flagged_images.Remove(flagged_images.Find((string x) => x.Contains(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString()))); //Remove the old value - flagged_images.Add(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString() + "=" + FlagComboBox.SelectedItem.ToString()); - } - else - { - flagged_images.Add(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString() + "=" + FlagComboBox.SelectedItem.ToString()); - } - - //Update dataGridView - dataGridView1.SelectedRows[0].Cells["Flag"].Value = FlagComboBox.SelectedItem.ToString(); - dataGridView1.SelectedRows[0].Cells["Flag"].Style.ForeColor = StringToColor(FlagComboBox.SelectedItem.ToString()); - dataGridView1.SelectedRows[0].Cells["Flag"].Style.BackColor = StringToColor(FlagComboBox.SelectedItem.ToString()); - dataGridView1.SelectedRows[0].Cells["Flag"].Style.SelectionBackColor = StringToColor(FlagComboBox.SelectedItem.ToString()); - dataGridView1.SelectedRows[0].Cells["Flag"].Style.SelectionForeColor = StringToColor(FlagComboBox.SelectedItem.ToString()); - - //Update the checkbox.ini - UpdateFlagged(selectResultsFolder, flagged_images.ToArray()); - } - - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------Down Arrow Pressed------------------------------------------------- - //=================================================================================================================== - - private void dataGridView1_KeyDown(object sender, KeyEventArgs e) - { - try - { - if (e.KeyCode == Keys.Space) - { - btnMarkAsViewed_Click(sender, e); - } - - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-----------------------------------------------Mouse Move Handler-------------------------------------------------- - //=================================================================================================================== - - //Mouse moved over pictureBox2 - private void pictureBox_MouseMove(object sender, MouseEventArgs e) - { - try - { - //Update mouse positions - mouse_x = e.X; - mouse_y = e.Y; - /* - if ( pbox1_left || pbox2_left || pbox1_right || pbox2_right ) - if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) - { - int size = 90; - int offset = size / 2; - float image_ratio = ((float)pictureBox1.Image.Width / (float)pictureBox1.Image.Height); - int expected_height = (int)((float)pictureBox1.Width / image_ratio); - int height_offset = (pictureBox1.Height - expected_height) / 2; - - path.AddEllipse(mouse_x - offset, mouse_y - offset, size, size); - pictureBox1.Invalidate(); - pictureBox2.Invalidate(); - } - */ - //Update lbl_Info with mouse positions - lbl_Info.Text = string.Format("( {0}, {1} )", mouse_x, mouse_y); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //=================================================================================================================== - //----------------------------------------------Mouse Click Handlers-------------------------------------------------- - //=================================================================================================================== - - private void pictureBox1_MouseDown(object sender, MouseEventArgs e) - { - try - { - //Update mouse positions - mouse_x = e.X; - mouse_y = e.Y; - - int size = 90; - int offset = size / 2; - float image_ratio = ((float)pictureBox1.Image.Width / (float)pictureBox1.Image.Height); - int expected_height = (int)((float)pictureBox1.Width / image_ratio); - int height_offset = (pictureBox1.Height - expected_height) / 2; - - if (e.Button == MouseButtons.Left) - { - pbox1_left = true; - } - - if (e.Button == MouseButtons.Right) - { - pbox1_right = true; - path.AddEllipse(mouse_x - offset, mouse_y - offset, size, size); - } - - pictureBox1.Invalidate(); - pictureBox2.Invalidate(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //----------------------------------------------Mouse Click Handlers-------------------------------------------------- - //=================================================================================================================== - - private void pictureBox2_MouseDown(object sender, MouseEventArgs e) - { - try - { - //Update mouse positions - mouse_x = e.X; - mouse_y = e.Y; - - int size = 90; - int offset = size / 2; - float image_ratio = ((float)pictureBox1.Image.Width / (float)pictureBox1.Image.Height); - int expected_height = (int)((float)pictureBox1.Width / image_ratio); - int height_offset = (pictureBox1.Height - expected_height) / 2; - - if (e.Button == MouseButtons.Left) - { - pbox2_left = true; - } - - if (e.Button == MouseButtons.Right) - { - pbox2_right = true; - path.AddEllipse(mouse_x - offset, mouse_y - offset, size, size); - } - - pictureBox1.Invalidate(); - pictureBox2.Invalidate(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-------------------------------------------PictureBox OnPaint Handlers--------------------------------------------- - //=================================================================================================================== - - private void pictureBox1_Paint(object sender, PaintEventArgs e) - { - try - { - if (pictureBox1.Image != null) - { - int size = 90; - int offset = size / 2; - float image_ratio = ((float)pictureBox1.Image.Width / (float)pictureBox1.Image.Height); - int expected_height = (int)((float)pictureBox1.Width / image_ratio); - int height_offset = (pictureBox1.Height - expected_height) / 2; - - if (pbox1_left) - { - e.Graphics.FillEllipse(brush, mouse_x - offset, mouse_y - offset, size, size); - } - - if (pbox1_right) - { - e.Graphics.FillPath(brush, path); - } - - if (pbox2_left) - { - GraphicsPath temp_path = new GraphicsPath(); - temp_path.AddEllipse(mouse_x - offset, mouse_y - offset, size, size); - - e.Graphics.ExcludeClip(new Region(temp_path)); - e.Graphics.FillRectangle(brush, 0, height_offset, pictureBox1.Width, expected_height); - } - - if (pbox2_right) - { - e.Graphics.SetClip(path, CombineMode.Exclude); - e.Graphics.FillRectangle(brush, 0, height_offset, pictureBox1.Width, expected_height); - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //=================================================================================================================== - //-------------------------------------------PictureBox OnPaint Handlers--------------------------------------------- - //=================================================================================================================== - - private void pictureBox2_Paint(object sender, PaintEventArgs e) - { - try - { - if (pictureBox2.Image != null) - { - int size = 90; - int offset = size / 2; - float image_ratio = ((float)pictureBox1.Image.Width / (float)pictureBox1.Image.Height); - int expected_height = (int)((float)pictureBox1.Width / image_ratio); - int height_offset = (pictureBox1.Height - expected_height) / 2; - - if (pbox2_left) - { - e.Graphics.FillEllipse(brush, mouse_x - offset, mouse_y - offset, size, size); - } - - if (pbox2_right) - { - e.Graphics.FillPath(brush, path); - } - - if (pbox1_left) - { - GraphicsPath temp_path = new GraphicsPath(); - temp_path.AddEllipse(mouse_x - offset, mouse_y - offset, size, size); - - e.Graphics.ExcludeClip(new Region(temp_path)); - e.Graphics.FillRectangle(brush, 0, height_offset, pictureBox1.Width, expected_height); - } - - if (pbox1_right) - { - e.Graphics.SetClip(path, CombineMode.Exclude); - e.Graphics.FillRectangle(brush, 0, height_offset, pictureBox1.Width, expected_height); - } - - //PictureBox2 is the last to be drawn, therefore the click bools can be reset - pbox1_left = false; - pbox2_left = false; - pbox1_right = false; - pbox2_right = false; - - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------Mouse Click Up----------------------------------------------------- - //=================================================================================================================== - - private void pictureBox_MouseUp(object sender, MouseEventArgs e) - { - try - { - //Clear screen of drawn markers - if (e.Button == MouseButtons.Left) - { - pictureBox1.Refresh(); - pictureBox2.Refresh(); - path.Reset(); - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-------------------------------------------Select Algorithms Clicked----------------------------------------------- - //=================================================================================================================== - - private void selectAlgorithmsToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - AlgorithmsForm af = new AlgorithmsForm(); - af.ShowDialog(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //-------------------------------------------------Image Flagged----------------------------------------------------- - //=================================================================================================================== - - private void FlagComboBox_SelectionChangeCommitted(object sender, EventArgs e) - { - try - { - MarkAsFlagged(); - FlagComboBox.SelectedIndex = -1; - dataGridView1.Update(); - dataGridView1.Focus(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //--------------------------------------------------Clear Flag------------------------------------------------------- - //=================================================================================================================== - - private void btnClearFlag_Click(object sender, EventArgs e) - { - try - { - if (flagged_images.Any((string x) => x.Split('=')[0].Contains(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString()))) - { - flagged_images.Remove(flagged_images.Find((string x) => x.Contains(dataGridView1.SelectedRows[0].Cells["Image"].Value.ToString()))); //Remove the old value - } - - //Update dataGridView - dataGridView1.SelectedRows[0].Cells["Flag"].Value = ""; - dataGridView1.SelectedRows[0].Cells["Flag"].Style.ForeColor = Color.White; - dataGridView1.SelectedRows[0].Cells["Flag"].Style.BackColor = Color.White; - dataGridView1.SelectedRows[0].Cells["Flag"].Style.SelectionBackColor = Color.FromKnownColor(KnownColor.Highlight); - dataGridView1.SelectedRows[0].Cells["Flag"].Style.SelectionForeColor = Color.FromKnownColor(KnownColor.Highlight); - - //Update the checkbox.ini - UpdateFlagged(selectResultsFolder, flagged_images.ToArray()); - - dataGridView1.Update(); - dataGridView1.Focus(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void saveImageToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void aboutToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - AboutBox about = new AboutBox(); - about.ShowDialog(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.designer.cs deleted file mode 100644 index 97ad9a6..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.designer.cs +++ /dev/null @@ -1,674 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class MainForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - this.menuStrip = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.menuOptions = new System.Windows.Forms.ToolStripMenuItem(); - this.editParametersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectAlgorithmsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.optimizeForViewingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.viewingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.analysisToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.menuBtnSelectResults = new System.Windows.Forms.ToolStripMenuItem(); - this.menuBtnNewAnalysis = new System.Windows.Forms.ToolStripMenuItem(); - this.menuOptimizedMode = new System.Windows.Forms.ToolStripMenuItem(); - this.viewingToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.analysisToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.pictureBox2 = new System.Windows.Forms.PictureBox(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); - this.pictureBoxLegend = new System.Windows.Forms.PictureBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.dataGridView1 = new System.Windows.Forms.DataGridView(); - this.Flag = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Checked = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Image = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Score = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.lbl_Info = new System.Windows.Forms.Label(); - this.btnMarkAsViewed = new System.Windows.Forms.Button(); - this.btnSelectResults = new System.Windows.Forms.Button(); - this.btnNewAnalysis = new System.Windows.Forms.Button(); - this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); - this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); - this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel(); - this.FlagComboBox = new System.Windows.Forms.ComboBox(); - this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel(); - this.btnClearFlag = new System.Windows.Forms.Button(); - this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); - this.btnOpenImageNewWindow = new System.Windows.Forms.Button(); - this.menuStrip.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); - this.tableLayoutPanel1.SuspendLayout(); - this.tableLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxLegend)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); - this.tableLayoutPanel3.SuspendLayout(); - this.tableLayoutPanel4.SuspendLayout(); - this.tableLayoutPanel5.SuspendLayout(); - this.tableLayoutPanel6.SuspendLayout(); - this.flowLayoutPanel1.SuspendLayout(); - this.SuspendLayout(); - // - // menuStrip - // - this.menuStrip.BackColor = System.Drawing.Color.LightGray; - this.menuStrip.Font = new System.Drawing.Font("Segoe UI", 10.75F); - this.menuStrip.ImageScalingSize = new System.Drawing.Size(32, 32); - this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.menuOptions, - this.menuBtnSelectResults, - this.menuBtnNewAnalysis, - this.menuOptimizedMode}); - this.menuStrip.Location = new System.Drawing.Point(0, 0); - this.menuStrip.Name = "menuStrip"; - this.menuStrip.Padding = new System.Windows.Forms.Padding(4, 1, 0, 1); - this.menuStrip.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; - this.menuStrip.Size = new System.Drawing.Size(1513, 26); - this.menuStrip.TabIndex = 0; - this.menuStrip.Text = "Menu"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.saveImageToolStripMenuItem, - this.aboutToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(44, 24); - this.fileToolStripMenuItem.Text = "File"; - // - // saveImageToolStripMenuItem - // - this.saveImageToolStripMenuItem.Enabled = false; - this.saveImageToolStripMenuItem.Name = "saveImageToolStripMenuItem"; - this.saveImageToolStripMenuItem.Size = new System.Drawing.Size(155, 24); - this.saveImageToolStripMenuItem.Text = "Save Image"; - this.saveImageToolStripMenuItem.Visible = false; - this.saveImageToolStripMenuItem.Click += new System.EventHandler(this.saveImageToolStripMenuItem_Click); - // - // aboutToolStripMenuItem - // - this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(155, 24); - this.aboutToolStripMenuItem.Text = "About"; - this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); - // - // menuOptions - // - this.menuOptions.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.editParametersToolStripMenuItem, - this.selectAlgorithmsToolStripMenuItem, - this.optimizeForViewingToolStripMenuItem}); - this.menuOptions.Name = "menuOptions"; - this.menuOptions.Size = new System.Drawing.Size(73, 24); - this.menuOptions.Text = "Options"; - // - // editParametersToolStripMenuItem - // - this.editParametersToolStripMenuItem.Name = "editParametersToolStripMenuItem"; - this.editParametersToolStripMenuItem.Size = new System.Drawing.Size(195, 24); - this.editParametersToolStripMenuItem.Text = "Edit Parameters"; - this.editParametersToolStripMenuItem.Click += new System.EventHandler(this.editParametersToolStripMenuItem_Click); - // - // selectAlgorithmsToolStripMenuItem - // - this.selectAlgorithmsToolStripMenuItem.Name = "selectAlgorithmsToolStripMenuItem"; - this.selectAlgorithmsToolStripMenuItem.Size = new System.Drawing.Size(195, 24); - this.selectAlgorithmsToolStripMenuItem.Text = "Select Algorithms"; - this.selectAlgorithmsToolStripMenuItem.Click += new System.EventHandler(this.selectAlgorithmsToolStripMenuItem_Click); - // - // optimizeForViewingToolStripMenuItem - // - this.optimizeForViewingToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.viewingToolStripMenuItem, - this.analysisToolStripMenuItem}); - this.optimizeForViewingToolStripMenuItem.Name = "optimizeForViewingToolStripMenuItem"; - this.optimizeForViewingToolStripMenuItem.Size = new System.Drawing.Size(195, 24); - this.optimizeForViewingToolStripMenuItem.Text = "Optimize for..."; - // - // viewingToolStripMenuItem - // - this.viewingToolStripMenuItem.Name = "viewingToolStripMenuItem"; - this.viewingToolStripMenuItem.Size = new System.Drawing.Size(131, 24); - this.viewingToolStripMenuItem.Text = "Viewing"; - this.viewingToolStripMenuItem.Click += new System.EventHandler(this.viewingToolStripMenuItem_Click); - // - // analysisToolStripMenuItem - // - this.analysisToolStripMenuItem.Name = "analysisToolStripMenuItem"; - this.analysisToolStripMenuItem.Size = new System.Drawing.Size(131, 24); - this.analysisToolStripMenuItem.Text = "Analysis"; - this.analysisToolStripMenuItem.Click += new System.EventHandler(this.analysisToolStripMenuItem_Click); - // - // menuBtnSelectResults - // - this.menuBtnSelectResults.Enabled = false; - this.menuBtnSelectResults.Name = "menuBtnSelectResults"; - this.menuBtnSelectResults.Size = new System.Drawing.Size(157, 24); - this.menuBtnSelectResults.Text = "Select Results Folder"; - this.menuBtnSelectResults.Visible = false; - this.menuBtnSelectResults.Click += new System.EventHandler(this.menuBtnSelectResults_Click); - // - // menuBtnNewAnalysis - // - this.menuBtnNewAnalysis.BackColor = System.Drawing.Color.LightGray; - this.menuBtnNewAnalysis.Enabled = false; - this.menuBtnNewAnalysis.Name = "menuBtnNewAnalysis"; - this.menuBtnNewAnalysis.Size = new System.Drawing.Size(137, 24); - this.menuBtnNewAnalysis.Text = "Run New Analysis"; - this.menuBtnNewAnalysis.Visible = false; - this.menuBtnNewAnalysis.Click += new System.EventHandler(this.menuBtnNewAnalysis_Click); - // - // menuOptimizedMode - // - this.menuOptimizedMode.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.viewingToolStripMenuItem1, - this.analysisToolStripMenuItem1}); - this.menuOptimizedMode.ForeColor = System.Drawing.SystemColors.WindowText; - this.menuOptimizedMode.Name = "menuOptimizedMode"; - this.menuOptimizedMode.ShowShortcutKeys = false; - this.menuOptimizedMode.Size = new System.Drawing.Size(121, 24); - this.menuOptimizedMode.Text = "Optimized for: "; - // - // viewingToolStripMenuItem1 - // - this.viewingToolStripMenuItem1.Name = "viewingToolStripMenuItem1"; - this.viewingToolStripMenuItem1.Size = new System.Drawing.Size(131, 24); - this.viewingToolStripMenuItem1.Text = "Viewing"; - this.viewingToolStripMenuItem1.Click += new System.EventHandler(this.viewingToolStripMenuItem_Click); - // - // analysisToolStripMenuItem1 - // - this.analysisToolStripMenuItem1.Name = "analysisToolStripMenuItem1"; - this.analysisToolStripMenuItem1.Size = new System.Drawing.Size(131, 24); - this.analysisToolStripMenuItem1.Text = "Analysis"; - this.analysisToolStripMenuItem1.Click += new System.EventHandler(this.analysisToolStripMenuItem_Click); - // - // pictureBox1 - // - this.pictureBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBox1.Location = new System.Drawing.Point(1, 5); - this.pictureBox1.Margin = new System.Windows.Forms.Padding(1, 5, 1, 1); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(594, 522); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint); - this.pictureBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseDown); - this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseMove); - this.pictureBox1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseUp); - // - // pictureBox2 - // - this.pictureBox2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.pictureBox2.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBox2.Location = new System.Drawing.Point(597, 5); - this.pictureBox2.Margin = new System.Windows.Forms.Padding(1, 5, 1, 1); - this.pictureBox2.Name = "pictureBox2"; - this.pictureBox2.Size = new System.Drawing.Size(594, 522); - this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBox2.TabIndex = 0; - this.pictureBox2.TabStop = false; - this.pictureBox2.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox2_Paint); - this.pictureBox2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pictureBox2_MouseDown); - this.pictureBox2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseMove); - this.pictureBox2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pictureBox_MouseUp); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel1.ColumnCount = 3; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); - this.tableLayoutPanel1.Controls.Add(this.pictureBox1, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.pictureBox2, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.dataGridView1, 2, 0); - this.tableLayoutPanel1.Controls.Add(this.lbl_Info, 2, 1); - this.tableLayoutPanel1.Location = new System.Drawing.Point(13, 122); - this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(1); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 2; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 36F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1490, 564); - this.tableLayoutPanel1.TabIndex = 3; - // - // tableLayoutPanel2 - // - this.tableLayoutPanel2.ColumnCount = 3; - this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 2); - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 321F)); - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel2.Controls.Add(this.pictureBoxLegend, 1, 0); - this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0); - this.tableLayoutPanel2.Controls.Add(this.label2, 2, 0); - this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 528); - this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); - this.tableLayoutPanel2.Name = "tableLayoutPanel2"; - this.tableLayoutPanel2.Padding = new System.Windows.Forms.Padding(0, 6, 0, 0); - this.tableLayoutPanel2.RowCount = 1; - this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel2.Size = new System.Drawing.Size(1192, 36); - this.tableLayoutPanel2.TabIndex = 6; - // - // pictureBoxLegend - // - this.pictureBoxLegend.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBoxLegend.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxLegend.Image"))); - this.pictureBoxLegend.Location = new System.Drawing.Point(435, 6); - this.pictureBoxLegend.Margin = new System.Windows.Forms.Padding(0); - this.pictureBoxLegend.Name = "pictureBoxLegend"; - this.pictureBoxLegend.Size = new System.Drawing.Size(321, 30); - this.pictureBoxLegend.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBoxLegend.TabIndex = 5; - this.pictureBoxLegend.TabStop = false; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Dock = System.Windows.Forms.DockStyle.Right; - this.label1.ForeColor = System.Drawing.SystemColors.HighlightText; - this.label1.Location = new System.Drawing.Point(334, 6); - this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(97, 30); - this.label1.TabIndex = 6; - this.label1.Text = "Low Anomaly"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Dock = System.Windows.Forms.DockStyle.Left; - this.label2.ForeColor = System.Drawing.SystemColors.HighlightText; - this.label2.Location = new System.Drawing.Point(760, 6); - this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(99, 30); - this.label2.TabIndex = 7; - this.label2.Text = "High Anomaly"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // dataGridView1 - // - this.dataGridView1.AllowUserToAddRows = false; - this.dataGridView1.AllowUserToDeleteRows = false; - this.dataGridView1.AllowUserToResizeRows = false; - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.Flag, - this.Checked, - this.Image, - this.Score}); - dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle5; - this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridView1.Location = new System.Drawing.Point(1195, 3); - this.dataGridView1.MultiSelect = false; - this.dataGridView1.Name = "dataGridView1"; - this.dataGridView1.RowHeadersVisible = false; - this.dataGridView1.RowTemplate.ReadOnly = true; - this.dataGridView1.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridView1.ShowEditingIcon = false; - this.dataGridView1.Size = new System.Drawing.Size(292, 522); - this.dataGridView1.TabIndex = 7; - this.dataGridView1.SelectionChanged += new System.EventHandler(this.dataGridView1_SelectionChanged); - this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown); - // - // Flag - // - this.Flag.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.Flag.FillWeight = 20F; - this.Flag.HeaderText = "Flag"; - this.Flag.Name = "Flag"; - this.Flag.Resizable = System.Windows.Forms.DataGridViewTriState.True; - // - // Checked - // - this.Checked.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.Checked.DefaultCellStyle = dataGridViewCellStyle2; - this.Checked.FillWeight = 20F; - this.Checked.HeaderText = "Viewed"; - this.Checked.Name = "Checked"; - // - // Image - // - this.Image.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.Image.DefaultCellStyle = dataGridViewCellStyle3; - this.Image.FillWeight = 40F; - this.Image.HeaderText = "Image"; - this.Image.Name = "Image"; - // - // Score - // - this.Score.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.Score.DefaultCellStyle = dataGridViewCellStyle4; - this.Score.FillWeight = 20F; - this.Score.HeaderText = "Score"; - this.Score.Name = "Score"; - // - // lbl_Info - // - this.lbl_Info.Anchor = System.Windows.Forms.AnchorStyles.None; - this.lbl_Info.AutoSize = true; - this.lbl_Info.ForeColor = System.Drawing.SystemColors.HighlightText; - this.lbl_Info.Location = new System.Drawing.Point(1285, 537); - this.lbl_Info.Name = "lbl_Info"; - this.lbl_Info.Size = new System.Drawing.Size(112, 18); - this.lbl_Info.TabIndex = 8; - this.lbl_Info.Text = "Mouse Position"; - // - // btnMarkAsViewed - // - this.btnMarkAsViewed.Dock = System.Windows.Forms.DockStyle.Fill; - this.btnMarkAsViewed.Location = new System.Drawing.Point(89, 1); - this.btnMarkAsViewed.Margin = new System.Windows.Forms.Padding(1); - this.btnMarkAsViewed.Name = "btnMarkAsViewed"; - this.btnMarkAsViewed.Size = new System.Drawing.Size(206, 35); - this.btnMarkAsViewed.TabIndex = 6; - this.btnMarkAsViewed.Text = "Mark As Viewed"; - this.btnMarkAsViewed.UseVisualStyleBackColor = true; - this.btnMarkAsViewed.Click += new System.EventHandler(this.btnMarkAsViewed_Click); - // - // btnSelectResults - // - this.btnSelectResults.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); - this.btnSelectResults.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnSelectResults.ForeColor = System.Drawing.SystemColors.ControlText; - this.btnSelectResults.Location = new System.Drawing.Point(20, 17); - this.btnSelectResults.Margin = new System.Windows.Forms.Padding(20, 4, 20, 4); - this.btnSelectResults.Name = "btnSelectResults"; - this.btnSelectResults.Size = new System.Drawing.Size(257, 41); - this.btnSelectResults.TabIndex = 4; - this.btnSelectResults.Text = "View Analysis Results"; - this.btnSelectResults.UseVisualStyleBackColor = true; - this.btnSelectResults.Click += new System.EventHandler(this.menuBtnSelectResults_Click); - // - // btnNewAnalysis - // - this.btnNewAnalysis.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); - this.btnNewAnalysis.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnNewAnalysis.ForeColor = System.Drawing.SystemColors.ControlText; - this.btnNewAnalysis.Location = new System.Drawing.Point(317, 17); - this.btnNewAnalysis.Margin = new System.Windows.Forms.Padding(20, 4, 20, 4); - this.btnNewAnalysis.Name = "btnNewAnalysis"; - this.btnNewAnalysis.Size = new System.Drawing.Size(257, 41); - this.btnNewAnalysis.TabIndex = 5; - this.btnNewAnalysis.Text = "Run New Analysis"; - this.btnNewAnalysis.UseVisualStyleBackColor = true; - this.btnNewAnalysis.Click += new System.EventHandler(this.menuBtnNewAnalysis_Click); - // - // tableLayoutPanel3 - // - this.tableLayoutPanel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel3.ColumnCount = 3; - this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F)); - this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); - this.tableLayoutPanel3.Controls.Add(this.tableLayoutPanel4, 0, 0); - this.tableLayoutPanel3.Controls.Add(this.tableLayoutPanel5, 2, 1); - this.tableLayoutPanel3.Controls.Add(this.tableLayoutPanel6, 2, 0); - this.tableLayoutPanel3.Controls.Add(this.flowLayoutPanel1, 1, 0); - this.tableLayoutPanel3.Location = new System.Drawing.Point(13, 42); - this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(1); - this.tableLayoutPanel3.Name = "tableLayoutPanel3"; - this.tableLayoutPanel3.RowCount = 2; - this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel3.Size = new System.Drawing.Size(1490, 78); - this.tableLayoutPanel3.TabIndex = 7; - // - // tableLayoutPanel4 - // - this.tableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.tableLayoutPanel4.ColumnCount = 2; - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel4.Controls.Add(this.btnNewAnalysis, 1, 0); - this.tableLayoutPanel4.Controls.Add(this.btnSelectResults, 0, 0); - this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel4.Location = new System.Drawing.Point(1, 1); - this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(1); - this.tableLayoutPanel4.Name = "tableLayoutPanel4"; - this.tableLayoutPanel4.RowCount = 1; - this.tableLayoutPanel3.SetRowSpan(this.tableLayoutPanel4, 2); - this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel4.Size = new System.Drawing.Size(594, 76); - this.tableLayoutPanel4.TabIndex = 7; - // - // tableLayoutPanel5 - // - this.tableLayoutPanel5.ColumnCount = 2; - this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F)); - this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70F)); - this.tableLayoutPanel5.Controls.Add(this.FlagComboBox, 0, 0); - this.tableLayoutPanel5.Controls.Add(this.btnMarkAsViewed, 1, 0); - this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel5.Location = new System.Drawing.Point(1193, 40); - this.tableLayoutPanel5.Margin = new System.Windows.Forms.Padding(1); - this.tableLayoutPanel5.Name = "tableLayoutPanel5"; - this.tableLayoutPanel5.RowCount = 1; - this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel5.Size = new System.Drawing.Size(296, 37); - this.tableLayoutPanel5.TabIndex = 11; - // - // FlagComboBox - // - this.FlagComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); - this.FlagComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.FlagComboBox.ItemHeight = 18; - this.FlagComboBox.Items.AddRange(new object[] { - "Red", - "Orange", - "Yellow", - "Green", - "Blue", - "Purple", - "Gray"}); - this.FlagComboBox.Location = new System.Drawing.Point(1, 8); - this.FlagComboBox.Margin = new System.Windows.Forms.Padding(1); - this.FlagComboBox.Name = "FlagComboBox"; - this.FlagComboBox.Size = new System.Drawing.Size(86, 26); - this.FlagComboBox.TabIndex = 8; - this.FlagComboBox.SelectionChangeCommitted += new System.EventHandler(this.FlagComboBox_SelectionChangeCommitted); - // - // tableLayoutPanel6 - // - this.tableLayoutPanel6.ColumnCount = 2; - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F)); - this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 70F)); - this.tableLayoutPanel6.Controls.Add(this.btnClearFlag, 0, 0); - this.tableLayoutPanel6.Location = new System.Drawing.Point(1193, 1); - this.tableLayoutPanel6.Margin = new System.Windows.Forms.Padding(1); - this.tableLayoutPanel6.Name = "tableLayoutPanel6"; - this.tableLayoutPanel6.RowCount = 1; - this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); - this.tableLayoutPanel6.Size = new System.Drawing.Size(296, 37); - this.tableLayoutPanel6.TabIndex = 12; - // - // btnClearFlag - // - this.btnClearFlag.Dock = System.Windows.Forms.DockStyle.Fill; - this.btnClearFlag.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnClearFlag.ForeColor = System.Drawing.SystemColors.ControlText; - this.btnClearFlag.Location = new System.Drawing.Point(1, 1); - this.btnClearFlag.Margin = new System.Windows.Forms.Padding(1); - this.btnClearFlag.Name = "btnClearFlag"; - this.btnClearFlag.Size = new System.Drawing.Size(86, 35); - this.btnClearFlag.TabIndex = 9; - this.btnClearFlag.Text = "Clear Flag"; - this.btnClearFlag.UseVisualStyleBackColor = true; - this.btnClearFlag.Click += new System.EventHandler(this.btnClearFlag_Click); - // - // flowLayoutPanel1 - // - this.flowLayoutPanel1.Controls.Add(this.btnOpenImageNewWindow); - this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; - this.flowLayoutPanel1.Location = new System.Drawing.Point(597, 1); - this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(1); - this.flowLayoutPanel1.Name = "flowLayoutPanel1"; - this.flowLayoutPanel1.Size = new System.Drawing.Size(594, 37); - this.flowLayoutPanel1.TabIndex = 9; - // - // btnOpenImageNewWindow - // - this.btnOpenImageNewWindow.Anchor = System.Windows.Forms.AnchorStyles.None; - this.btnOpenImageNewWindow.Location = new System.Drawing.Point(358, 1); - this.btnOpenImageNewWindow.Margin = new System.Windows.Forms.Padding(1); - this.btnOpenImageNewWindow.Name = "btnOpenImageNewWindow"; - this.btnOpenImageNewWindow.Size = new System.Drawing.Size(235, 35); - this.btnOpenImageNewWindow.TabIndex = 0; - this.btnOpenImageNewWindow.Text = "Open in New Window"; - this.btnOpenImageNewWindow.UseVisualStyleBackColor = true; - this.btnOpenImageNewWindow.Click += new System.EventHandler(this.openImagesInNewWindowToolStripMenuItem_Click); - // - // MainForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.ClientSize = new System.Drawing.Size(1513, 696); - this.Controls.Add(this.tableLayoutPanel3); - this.Controls.Add(this.tableLayoutPanel1); - this.Controls.Add(this.menuStrip); - this.DoubleBuffered = true; - this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ForeColor = System.Drawing.SystemColors.WindowText; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip; - this.Margin = new System.Windows.Forms.Padding(1); - this.MinimumSize = new System.Drawing.Size(1240, 735); - this.Name = "MainForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Computer Vision Emergency Response Toolkit"; - this.menuStrip.ResumeLayout(false); - this.menuStrip.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); - this.tableLayoutPanel1.ResumeLayout(false); - this.tableLayoutPanel1.PerformLayout(); - this.tableLayoutPanel2.ResumeLayout(false); - this.tableLayoutPanel2.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxLegend)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); - this.tableLayoutPanel3.ResumeLayout(false); - this.tableLayoutPanel4.ResumeLayout(false); - this.tableLayoutPanel5.ResumeLayout(false); - this.tableLayoutPanel6.ResumeLayout(false); - this.flowLayoutPanel1.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.MenuStrip menuStrip; - private System.Windows.Forms.ToolStripMenuItem menuBtnSelectResults; - private System.Windows.Forms.ToolStripMenuItem menuBtnNewAnalysis; - private System.Windows.Forms.PictureBox pictureBox1; - private System.Windows.Forms.PictureBox pictureBox2; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.PictureBox pictureBoxLegend; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.ToolStripMenuItem menuOptions; - private System.Windows.Forms.ToolStripMenuItem editParametersToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem optimizeForViewingToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem viewingToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem analysisToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem menuOptimizedMode; - private System.Windows.Forms.Button btnSelectResults; - private System.Windows.Forms.Button btnNewAnalysis; - private System.Windows.Forms.Button btnMarkAsViewed; - private System.Windows.Forms.ToolStripMenuItem viewingToolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem analysisToolStripMenuItem1; - private System.Windows.Forms.DataGridView dataGridView1; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; - private System.Windows.Forms.Label lbl_Info; - private System.Windows.Forms.ToolStripMenuItem selectAlgorithmsToolStripMenuItem; - private System.Windows.Forms.ComboBox FlagComboBox; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; - private System.Windows.Forms.Button btnClearFlag; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel6; - private System.Windows.Forms.Button btnOpenImageNewWindow; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveImageToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem; - private System.Windows.Forms.DataGridViewTextBoxColumn Flag; - private System.Windows.Forms.DataGridViewTextBoxColumn Checked; - private System.Windows.Forms.DataGridViewTextBoxColumn Image; - private System.Windows.Forms.DataGridViewTextBoxColumn Score; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.resx b/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.resx deleted file mode 100644 index ad13c1f..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/MainForm.resx +++ /dev/null @@ -1,730 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - - - - /9j/4AAQSkZJRgABAQEAAAAAAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYG - BwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoK - CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAeAQADASIAAhEBAxEB/8QA - HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh - MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW - V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG - x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF - BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV - YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE - hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq - 8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8P7fr+NXrfr+FUbfr+NXrfr+Ff6ccNfZPi62xoW1XrXtVG2q9 - a9q/oDhr7J5dbY6vwr1X616X4T6r9BXmnhXqv1r0vwn1X6CvdzjZnwGfbs9M8KfwfhXpXhXov0rzXwp/ - B+FeleFei/SvyrOOp+KZ99o9K8KfwfhXpfhXov0rzTwp/B+Fel+Fei/SvyzOOp+LZ9uz0vwp2r0zwr1X - 615n4U7V6Z4V6r9a/Ks46n4nn27Ozse30rYs+g+lY9j2+lbFn0H0r+fuMNpHqcKbxNeyrYsqx7Ktiyr+ - U+MdpH9KcKbxNex7fWtix7fWsex7fWtix7fWv5W4w2kf0lwptE17D+Gtiw/hrHsP4a2LD+Gv5V4x+0f0 - twpvEw/FXVvrXmniro30r0vxV1b615p4q6N9K+UybdH9A5B0PNPFf8f415n4r/j/ABr0zxX/AB/jXmfi - v+P8a/Vcm2R+2ZBsjzfxX/H+NeZ+K/4/xr0zxX/H+NeZ+K/4/wAa/VMm6H7VkO8TzTxV1b615p4q6N9K - 9L8VdW+teaeKujfSv1TJtkftWQdDhtW6n6VzOq/dNdNq3U/SuZ1X7pr9BwW6PN4l+0czq3U/SuY1bofr - XT6t1P0rmNW6H619Vgtj8A4k3Z4vb9fxq9b9fwqjb9fxq9b9fwr/AGj4a+yf5JVtjQtqvWvaqNtV617V - /QHDX2Ty62x1fhXqv1r0vwn1X6CvNPCvVfrXpfhPqv0Fe7nGzPgM+3Z6Z4U/g/CvSvCvRfpXmvhT+D8K - 9K8K9F+lflWcdT8Uz77R6V4U/g/CvS/CvRfpXmnhT+D8K9L8K9F+lflmcdT8Wz7dnpfhTtXpnhXqv1rz - Pwp2r0zwr1X61+VZx1PxPPt2dnY9vpWxZ9B9Kx7Ht9K2LPoPpX8/cYbSPU4U3ia9lWxZVj2VbFlX8p8Y - 7SP6U4U3ia9j2+tbFj2+tY9j2+tbFj2+tfytxhtI/pLhTaJr2H8NbFh/DWPYfw1sWH8Nfyrxj9o/pbhT - eJh+KurfWvNPFXRvpXpfirq31rzTxV0b6V8pk26P6ByDoeaeK/4/xrzPxX/H+NemeK/4/wAa8z8V/wAf - 41+q5Nsj9syDZHm/iv8Aj/GvM/Ff8f416Z4r/j/GvM/Ff8f41+qZN0P2rId4nmnirq31rzTxV0b6V6X4 - q6t9a808VdG+lfqmTbI/asg6HDat1P0rmdV+6a6bVup+lczqv3TX6Dgt0ebxL9o5nVup+lcxq3Q/Wun1 - bqfpXMat0P1r6rBbH4BxJuz/2Q== - - - - True - - - True - - - True - - - True - - - 46 - - - - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA - IACoJQAA7h4AAAAAAAABACAArT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.cs b/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.cs deleted file mode 100644 index 6f7b2f3..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.cs +++ /dev/null @@ -1,162 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using SystemLog; - -namespace Computer_Vision_Toolkit -{ - public partial class ParametersForm : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - public List paramList = new List(); - public bool saved_changes = true; - - - public ParametersForm() - { - InitializeComponent(); - - //Read the parameters.ini file and load into form - Read(); - saveStatus.Text = "Saved..."; - } - - //Read the parameters.ini file - private void Read() - { - try - { - - string[] entries = File.ReadAllLines(@"lib\parameters.ini"); - foreach (string str in entries) - { - //Skip comment lines - if (str.StartsWith("#")) continue; - - //Remove any remaining comment sections - string p_str = str.Split('#')[0]; - - string[] opt = p_str.Split('='); //name=default=value - paramData.Rows.Add( opt[0], Convert.ToInt32(opt[1]), Convert.ToDouble(opt[2]), Convert.ToDouble(opt[3])); - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //Save to the parameters.ini file - private void Save() - { - try - { - - paramList.Clear(); - if (paramData.Rows.Count > 0) - { - //Create array of strings - foreach (DataGridViewRow row in paramData.Rows) - { - paramList.Add(row.Cells[0].Value + "=" + Convert.ToInt32(row.Cells[1].Value).ToString() + "=" + Convert.ToDouble(row.Cells[2].Value).ToString() + "=" + Convert.ToDouble(row.Cells[3].Value).ToString()); - } - - //Write string array to file - File.WriteAllLines(@"lib\parameters.ini", paramList.ToArray()); - } - - saved_changes = true; - saveStatus.Text = "Saved..."; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - private void btnSave_Click(object sender, EventArgs e) - { - Save(); - this.Close(); - } - - private void btnCancel_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void ParametersForm_FormClosing(object sender, FormClosingEventArgs e) - { - //Last chance to save - if (!saved_changes) - { - if (MessageBox.Show("Any unsaved changes will be lost. Would you like to save before exitting?", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - Save(); - } - } - - private void paramData_CellContentClick(object sender, DataGridViewCellEventArgs e) - { - //Something was changed - saved_changes = false; - saveStatus.Text = "Not Saved..."; - paramData.Rows[e.RowIndex].Cells[1].Value = false; - } - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.designer.cs deleted file mode 100644 index 7684e3e..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.designer.cs +++ /dev/null @@ -1,199 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class ParametersForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ParametersForm)); - this.btnSave = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.paramData = new System.Windows.Forms.DataGridView(); - this.Parameter = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.DefaultChkBox = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.DefaultValue = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Value = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.saveStatus = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.paramData)).BeginInit(); - this.SuspendLayout(); - // - // btnSave - // - this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnSave.Location = new System.Drawing.Point(536, 427); - this.btnSave.Margin = new System.Windows.Forms.Padding(4); - this.btnSave.Name = "btnSave"; - this.btnSave.Size = new System.Drawing.Size(112, 32); - this.btnSave.TabIndex = 0; - this.btnSave.Text = "Save"; - this.btnSave.UseVisualStyleBackColor = true; - this.btnSave.Click += new System.EventHandler(this.btnSave_Click); - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.Location = new System.Drawing.Point(656, 427); - this.btnCancel.Margin = new System.Windows.Forms.Padding(4); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(112, 32); - this.btnCancel.TabIndex = 1; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); - // - // paramData - // - this.paramData.AllowUserToAddRows = false; - this.paramData.AllowUserToDeleteRows = false; - this.paramData.AllowUserToResizeRows = false; - this.paramData.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(10, 0, 0, 0); - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.paramData.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - this.paramData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.paramData.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.Parameter, - this.DefaultChkBox, - this.DefaultValue, - this.Value}); - dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.paramData.DefaultCellStyle = dataGridViewCellStyle5; - this.paramData.Location = new System.Drawing.Point(12, 12); - this.paramData.MultiSelect = false; - this.paramData.Name = "paramData"; - dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle6.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.paramData.RowHeadersDefaultCellStyle = dataGridViewCellStyle6; - this.paramData.RowHeadersVisible = false; - this.paramData.Size = new System.Drawing.Size(757, 398); - this.paramData.TabIndex = 2; - this.paramData.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.paramData_CellContentClick); - // - // Parameter - // - this.Parameter.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.Parameter.DefaultCellStyle = dataGridViewCellStyle2; - this.Parameter.FillWeight = 45F; - this.Parameter.HeaderText = "Parameter"; - this.Parameter.Name = "Parameter"; - this.Parameter.ReadOnly = true; - // - // DefaultChkBox - // - this.DefaultChkBox.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.DefaultChkBox.FillWeight = 15F; - this.DefaultChkBox.HeaderText = "Use Default"; - this.DefaultChkBox.Name = "DefaultChkBox"; - // - // DefaultValue - // - this.DefaultValue.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; - this.DefaultValue.DefaultCellStyle = dataGridViewCellStyle3; - this.DefaultValue.FillWeight = 20F; - this.DefaultValue.HeaderText = "Default"; - this.DefaultValue.Name = "DefaultValue"; - this.DefaultValue.ReadOnly = true; - // - // Value - // - this.Value.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; - this.Value.DefaultCellStyle = dataGridViewCellStyle4; - this.Value.FillWeight = 35F; - this.Value.HeaderText = "Value"; - this.Value.Name = "Value"; - // - // saveStatus - // - this.saveStatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.saveStatus.Location = new System.Drawing.Point(12, 431); - this.saveStatus.Name = "saveStatus"; - this.saveStatus.Size = new System.Drawing.Size(517, 25); - this.saveStatus.TabIndex = 3; - this.saveStatus.Text = "Save Status"; - this.saveStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ParametersForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(781, 472); - this.Controls.Add(this.saveStatus); - this.Controls.Add(this.paramData); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnSave); - this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(4); - this.Name = "ParametersForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Edit Parameters"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ParametersForm_FormClosing); - ((System.ComponentModel.ISupportInitialize)(this.paramData)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button btnSave; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.DataGridView paramData; - private System.Windows.Forms.Label saveStatus; - private System.Windows.Forms.DataGridViewTextBoxColumn Parameter; - private System.Windows.Forms.DataGridViewCheckBoxColumn DefaultChkBox; - private System.Windows.Forms.DataGridViewTextBoxColumn DefaultValue; - private System.Windows.Forms.DataGridViewTextBoxColumn Value; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.resx b/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.resx deleted file mode 100644 index 73f4189..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/ParametersForm.resx +++ /dev/null @@ -1,693 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - True - - - - - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA - IACoJQAA7h4AAAAAAAABACAArT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.cs b/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.cs deleted file mode 100644 index c3807d5..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.cs +++ /dev/null @@ -1,626 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Threading; -using System.Windows.Forms; -using SystemLog; - -namespace Computer_Vision_Toolkit -{ - - - public partial class ProcessForm : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - private string batchName; - private string[] selectedFileNames; - private string workingDirectory; - private string batchesDirectory; - private string currentBatch; - private string pythonPath; - private int fileCt = 0; - private Process backendProcess; - - private string copyDir; //Copy of original images directory - private string detDir; //Analyzed/results images directory - private string othDir; //Other analyzed images directory - private string modDir; //Modified copy of original images directory - - private int completed_files_ct = 0; - private string infoLogStr; - private int num_threads = 1; - - private List batch_names = new List(); - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public ProcessForm(Settings settings) - { - InitializeComponent(); - - workingDirectory = Environment.CurrentDirectory; - //batchesDirectory = Path.Combine(workingDirectory, "Batches"); - batchesDirectory = settings.BatchesPath; - - pythonPath = settings.PythonPath; - - if (settings.AllowMultiThread) - { - num_threads = System.Environment.ProcessorCount; - - //Reserve 2 processes for the rest of the system - if (num_threads > 2) - num_threads -= 2; - } - else num_threads = 1; - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - //Computes the next default batch name - private string getNextBatchName() - { - try - { - - string[] batch_paths = Directory.GetDirectories(batchesDirectory); - int ct = 0; - - //Finds the latest default batch name - foreach (string str_path in batch_paths) - { - string str = str_path.Split('\\').Last(); - - if (str.StartsWith("Batch_") && !str.EndsWith(")")) - { - //Try to extract the number after Batch_ - try - { - if (ct < Convert.ToInt32(str.Split('_')[1])) - { - ct = Convert.ToInt32(str.Split('_')[1]); - } - } - catch (FormatException e) //Throws an exception if the string after Batch_ can not be converted into a number - { - //Skip this folder name, as it is not a default name provided - } - } - } - ct++; //Increment default name by 1 - - return "Batch_" + ct.ToString(); - } - - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - return "Error_Batch"; - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void createDirectories() - { - try - { - - //Only create the directories when a folder has been selected - Directory.CreateDirectory(currentBatch); - Directory.CreateDirectory(copyDir); - Directory.CreateDirectory(detDir); - Directory.CreateDirectory(othDir); - Directory.CreateDirectory(modDir); - - File.Create(currentBatch + @"\batch_log.txt").Close(); - File.Create(currentBatch + @"\detected_log.txt").Close(); - File.Create(currentBatch + @"\modified_original_log.txt").Close(); //For future use - File.Create(currentBatch + @"\error_log.txt").Close(); - File.Create(currentBatch + @"\other_log.txt").Close(); - File.Create(currentBatch + @"\checkbox.ini").Close(); - File.Create(currentBatch + @"\flagged.ini").Close(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private void btnBatchName_Click(object sender, EventArgs e) - { - try - { - - //Get the next default batch name - batchName bn = new batchName(getNextBatchName()); - - //Prompt user to select a batch name - if (bn.ShowDialog() == DialogResult.OK && !String.IsNullOrEmpty(bn.getText())) - { - batchName = bn.getText(); - currentBatch = batchesDirectory + "\\" + batchName; - - //Handles case where batch name already exists - int i = 0; - if (Directory.Exists(currentBatch)) - { - i++; - while (Directory.Exists(currentBatch + " (" + i.ToString() + ")")) - { - i++; - } - batchName += " (" + i.ToString() + ")"; - } - - //Update the window title - this.Text = batchName; - - btnBatchName.Enabled = false; - btnBatchName.Visible = false; - btnSelectFolder.Enabled = true; - btnSelectFile.Enabled = true; - btnAnalyze.Enabled = true; - - currentBatch = batchesDirectory + "\\" + batchName; - copyDir = batchesDirectory + "\\" + batchName + "\\Original"; - detDir = batchesDirectory + "\\" + batchName + "\\Analyzed"; - othDir = batchesDirectory + "\\" + batchName + "\\Other Analyzed"; - modDir = batchesDirectory + "\\" + batchName + "\\Modified Original"; - - createDirectories(); - - - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private delegate void LabelInfo(string file, string progress); - private void UpdateLabelInfo(string file, string progress) - { - filesSelected.Text = file + fileCt; - lblProgressBar.Text = progress; - lblProgressBar.Update(); - } - - private void run_copy(object sender, DoWorkEventArgs e) - { - try - { - - string path; - foreach (string file in selectedFileNames) - { - if(checkBoxIncludeVideo.Checked) - { - if (file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".jpeg") || file.ToLower().EndsWith(".png") || file.ToLower().EndsWith(".mp4")) - { - path = Path.Combine(copyDir, Path.GetFileName(file)); - File.Copy(file, path, true); - fileCt++; - } - } - else - { - if (file.ToLower().EndsWith(".jpg") || file.ToLower().EndsWith(".jpeg") || file.ToLower().EndsWith(".png")) - { - path = Path.Combine(copyDir, Path.GetFileName(file)); - File.Copy(file, path, true); - fileCt++; - } - } - - } - - if (fileCt > 0) - Invoke(new LabelInfo(UpdateLabelInfo), "Files Selected: ", "Ready to analyze..."); - - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void btnSelectFile_Click(object sender, EventArgs e) - { - try - { - - //Prompt user to select a batch name - if (!String.IsNullOrEmpty(batchName)) - { - //Setup the file selection window - OpenFileDialog openFileDialog1 = new OpenFileDialog(); - openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - openFileDialog1.Filter = (checkBoxIncludeVideo.Checked)? "image files (*.jpg, *.jpeg, *.png, *.mp4)|*.jpg; *.jpeg; *.png; *.mp4|All files (*.*)|*.*" : "image files (*.jpg, *.jpeg, *.png)|*.jpg; *.jpeg; *.png|All files (*.*)|*.*"; - openFileDialog1.FilterIndex = 1; - openFileDialog1.RestoreDirectory = true; - openFileDialog1.Multiselect = true; - - //Prompt user to select an image(s) - if (openFileDialog1.ShowDialog() == DialogResult.OK) - { - //Number of selected images exceeds the limit performance is guaranteed - if (openFileDialog1.FileNames.Length > 1000) - { - if (MessageBox.Show("It is not recommended to run more than 1000 files. Speed is not guaranteed.", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) return; - } - - //Extracts the valid images from the selected image(s) - selectedFileNames = openFileDialog1.FileNames; - - lblProgressBar.Text = "Copying Images..."; - - //Create a background thread for the progress bar - BackgroundWorker worker = new BackgroundWorker(); - worker.DoWork += new DoWorkEventHandler(run_copy); - worker.RunWorkerAsync(this); - - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void btnSelectFolder_Click(object sender, EventArgs e) - { - try - { - - FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); - - //Prompt user to select a batch name - if (!String.IsNullOrEmpty(batchName)) - { - - //Prompt user to select a directory of images - if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) - { - String[] FileNames = Directory.GetFiles(folderBrowserDialog1.SelectedPath); - - //Number of selected images exceeds the limit performance is guaranteed - if (FileNames.Length > 1000) - { - if (MessageBox.Show("It is not recommended to run more than 1000 files. Speed is not guaranteed.", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) return; - } - - - selectedFileNames = FileNames; - - lblProgressBar.Text = "Copying Images..."; - - //Create a background thread for the progress bar - BackgroundWorker worker = new BackgroundWorker(); - worker.DoWork += new DoWorkEventHandler(run_copy); - worker.RunWorkerAsync(this); - - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void btnAnalyze_Click(object sender, EventArgs e) - { - try - { - - if(fileCt > 0) - { - //Disable buttons - btnSelectFolder.Enabled = false; - btnSelectFile.Enabled = false; - btnAnalyze.Enabled = false; - checkBoxIncludeVideo.Enabled = false; - - //Inform user that images are being analyzed - lblProgressBar.Text = "Initializing..."; - lblProgressBar.Update(); - - //string pythonArgs = " -3.6 \"" + @workingDirectory + @"\lib\analyze.py" + "\" -F \"" + @currentBatch + "\"" + " -p " + num_threads.ToString(); //Only supports Python 3.6 versions - string pythonArgs = " -3 \"" + @workingDirectory + @"\lib\analyze.py" + "\" -F \"" + @currentBatch + "\"" + " -p " + num_threads.ToString(); - - if (currentBatch != null) - { - //ProcessStartInfo startConfig = new ProcessStartInfo(pythonPath, pythonArgs); - ProcessStartInfo startConfig = new ProcessStartInfo(@"C:\Windows\py.exe", pythonArgs); - startConfig.UseShellExecute = false; - startConfig.RedirectStandardOutput = true; - startConfig.RedirectStandardError = true; - startConfig.CreateNoWindow = true; - - backendProcess = new Process { StartInfo = startConfig }; - - //Create output handlers - backendProcess.OutputDataReceived += redirectHandler; - backendProcess.ErrorDataReceived += redirectHandler; - backendProcess.EnableRaisingEvents = true; - - //Create a background thread for the progress bar - BackgroundWorker worker = new BackgroundWorker(); - worker.DoWork += new DoWorkEventHandler(run_analyze); - worker.RunWorkerAsync(this); - - } - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void run_analyze(object sender, DoWorkEventArgs e) - { - //Start the python process - backendProcess.Start(); - backendProcess.BeginOutputReadLine(); - backendProcess.BeginErrorReadLine(); - - //Wait for backend to finish, then clean up - backendProcess.WaitForExit(); - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - //Update progress of the backend - private delegate void Change(string status, int complete, int total); - private void OnChange(string status, int complete, int total) - { - try - { - - //Update progress form based on the given conditions - if (!string.IsNullOrEmpty(status)) - { - string[] opt = status.Split(' '); - switch (opt[0]) - { - case "-i-": //Initialization of backend completed - { - progressBar1.Visible = true; - progressBar1.Minimum = 0; - progressBar1.Value = 0; - progressBar1.Update(); - lblPercent.Text = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100).ToString() + " %"; - lblProgressBar.Text = "Analyzing..."; - break; - } - - case "-d-": //Image flagged as detected - { - completed_files_ct++; - progressBar1.Visible = true; - progressBar1.Minimum = 0; - //progressBar1.Maximum = total; - progressBar1.Value = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100); - progressBar1.Update(); - lblPercent.Text = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100).ToString() + " %"; - lblProgressBar.Text = "Analyzing..."; - break; - } - - case "-v-": //Video analyzed - { - completed_files_ct++; - progressBar1.Visible = true; - progressBar1.Minimum = 0; - //progressBar1.Maximum = total; - progressBar1.Value = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100); - progressBar1.Update(); - lblPercent.Text = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100).ToString() + " %"; - lblProgressBar.Text = "Analyzing..."; - break; - } - - case "-o-": //Image flagged as other - { - completed_files_ct++; - progressBar1.Visible = true; - progressBar1.Minimum = 0; - //progressBar1.Maximum = total; - progressBar1.Value = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100); - progressBar1.Update(); - lblPercent.Text = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100).ToString() + " %"; - lblProgressBar.Text = "Analyzing..."; - - break; - } - - case "-m-": //Image flagged as modified original - { - completed_files_ct++; - progressBar1.Visible = true; - progressBar1.Minimum = 0; - //progressBar1.Maximum = total; - progressBar1.Value = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100); - progressBar1.Update(); - lblPercent.Text = Convert.ToInt32(((double)completed_files_ct / (double)fileCt) * 100).ToString() + " %"; - lblProgressBar.Text = "Analyzing..."; - - break; - } - - case "-f-": //Backend has finished - { - lblProgressBar.Text = "Finished..."; - btnAnalyze.Text = "Finished"; - break; - } - - case "-e-": //An error in the backend has occurred - { - lblProgressBar.Text = "Error Detected..."; - break; - } - - default: //Backend has printed something unexpected/multiple print statements following an above case - { - //infoLog.Text += "An unexpected string has been detected..."; - break; - } - } - - //Update infoLog - infoLog.AppendText(status + "\r\n"); - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public void redirectHandler(object sendingProcess, DataReceivedEventArgs line) - { - // Collect the sort command output. - if (!string.IsNullOrEmpty(line.Data)) - { - infoLogStr += line.Data + "\r\n"; - try - { - Invoke(new Change(OnChange), line.Data, completed_files_ct, fileCt); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public string getCurrentBatchPath() - { - return currentBatch; - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - //Kill backend process if ProcessForm is closed - private void ProcessForm_FormClosing(object sender, FormClosingEventArgs e) - { - try - { - - if( backendProcess != null && !backendProcess.HasExited ) - backendProcess.Kill(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - - - - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.designer.cs deleted file mode 100644 index 7881fce..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.designer.cs +++ /dev/null @@ -1,218 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class ProcessForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessForm)); - this.btnAnalyze = new System.Windows.Forms.Button(); - this.btnSelectFile = new System.Windows.Forms.Button(); - this.btnSelectFolder = new System.Windows.Forms.Button(); - this.lblProgressBar = new System.Windows.Forms.Label(); - this.progressBar1 = new System.Windows.Forms.ProgressBar(); - this.lblPercent = new System.Windows.Forms.Label(); - this.filesSelected = new System.Windows.Forms.Label(); - this.infoLog = new System.Windows.Forms.TextBox(); - this.btnBatchName = new System.Windows.Forms.Button(); - this.checkBoxIncludeVideo = new System.Windows.Forms.CheckBox(); - this.SuspendLayout(); - // - // btnAnalyze - // - this.btnAnalyze.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.btnAnalyze.BackColor = System.Drawing.Color.LightGray; - this.btnAnalyze.Enabled = false; - this.btnAnalyze.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.btnAnalyze.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.btnAnalyze.Location = new System.Drawing.Point(496, 191); - this.btnAnalyze.Margin = new System.Windows.Forms.Padding(2); - this.btnAnalyze.Name = "btnAnalyze"; - this.btnAnalyze.Size = new System.Drawing.Size(114, 33); - this.btnAnalyze.TabIndex = 1; - this.btnAnalyze.Text = "Analyze"; - this.btnAnalyze.UseVisualStyleBackColor = false; - this.btnAnalyze.Click += new System.EventHandler(this.btnAnalyze_Click); - // - // btnSelectFile - // - this.btnSelectFile.BackColor = System.Drawing.Color.LightGray; - this.btnSelectFile.Enabled = false; - this.btnSelectFile.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.btnSelectFile.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.btnSelectFile.Location = new System.Drawing.Point(146, 19); - this.btnSelectFile.Margin = new System.Windows.Forms.Padding(2); - this.btnSelectFile.Name = "btnSelectFile"; - this.btnSelectFile.Size = new System.Drawing.Size(114, 33); - this.btnSelectFile.TabIndex = 2; - this.btnSelectFile.Text = "Select File"; - this.btnSelectFile.UseVisualStyleBackColor = false; - this.btnSelectFile.Click += new System.EventHandler(this.btnSelectFile_Click); - // - // btnSelectFolder - // - this.btnSelectFolder.BackColor = System.Drawing.Color.LightGray; - this.btnSelectFolder.Enabled = false; - this.btnSelectFolder.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.btnSelectFolder.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.btnSelectFolder.Location = new System.Drawing.Point(16, 19); - this.btnSelectFolder.Margin = new System.Windows.Forms.Padding(2); - this.btnSelectFolder.Name = "btnSelectFolder"; - this.btnSelectFolder.Size = new System.Drawing.Size(114, 33); - this.btnSelectFolder.TabIndex = 3; - this.btnSelectFolder.Text = "Select Folder"; - this.btnSelectFolder.UseVisualStyleBackColor = false; - this.btnSelectFolder.Click += new System.EventHandler(this.btnSelectFolder_Click); - // - // lblProgressBar - // - this.lblProgressBar.AutoSize = true; - this.lblProgressBar.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.lblProgressBar.ForeColor = System.Drawing.SystemColors.WindowText; - this.lblProgressBar.Location = new System.Drawing.Point(13, 91); - this.lblProgressBar.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblProgressBar.Name = "lblProgressBar"; - this.lblProgressBar.Size = new System.Drawing.Size(176, 18); - this.lblProgressBar.TabIndex = 4; - this.lblProgressBar.Text = "Waiting for file selection..."; - // - // progressBar1 - // - this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar1.BackColor = System.Drawing.Color.WhiteSmoke; - this.progressBar1.Location = new System.Drawing.Point(16, 113); - this.progressBar1.Margin = new System.Windows.Forms.Padding(2); - this.progressBar1.Name = "progressBar1"; - this.progressBar1.Size = new System.Drawing.Size(594, 31); - this.progressBar1.Step = 1; - this.progressBar1.TabIndex = 5; - // - // lblPercent - // - this.lblPercent.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lblPercent.AutoSize = true; - this.lblPercent.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.lblPercent.ForeColor = System.Drawing.SystemColors.WindowText; - this.lblPercent.Location = new System.Drawing.Point(577, 91); - this.lblPercent.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblPercent.Name = "lblPercent"; - this.lblPercent.Size = new System.Drawing.Size(33, 18); - this.lblPercent.TabIndex = 6; - this.lblPercent.Text = "0 %"; - // - // filesSelected - // - this.filesSelected.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.filesSelected.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.filesSelected.ForeColor = System.Drawing.SystemColors.WindowText; - this.filesSelected.Location = new System.Drawing.Point(265, 19); - this.filesSelected.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.filesSelected.Name = "filesSelected"; - this.filesSelected.Size = new System.Drawing.Size(352, 33); - this.filesSelected.TabIndex = 7; - this.filesSelected.Text = "No Files Selected"; - this.filesSelected.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // infoLog - // - this.infoLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.infoLog.BackColor = System.Drawing.Color.LightGray; - this.infoLog.Location = new System.Drawing.Point(16, 159); - this.infoLog.Multiline = true; - this.infoLog.Name = "infoLog"; - this.infoLog.ReadOnly = true; - this.infoLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.infoLog.Size = new System.Drawing.Size(462, 95); - this.infoLog.TabIndex = 8; - this.infoLog.TabStop = false; - // - // btnBatchName - // - this.btnBatchName.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.btnBatchName.Location = new System.Drawing.Point(16, 19); - this.btnBatchName.Name = "btnBatchName"; - this.btnBatchName.Size = new System.Drawing.Size(244, 33); - this.btnBatchName.TabIndex = 9; - this.btnBatchName.Text = "Create New Batch"; - this.btnBatchName.UseVisualStyleBackColor = true; - this.btnBatchName.Click += new System.EventHandler(this.btnBatchName_Click); - // - // checkBoxIncludeVideo - // - this.checkBoxIncludeVideo.AutoSize = true; - this.checkBoxIncludeVideo.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.checkBoxIncludeVideo.Location = new System.Drawing.Point(79, 58); - this.checkBoxIncludeVideo.Name = "checkBoxIncludeVideo"; - this.checkBoxIncludeVideo.Size = new System.Drawing.Size(122, 22); - this.checkBoxIncludeVideo.TabIndex = 10; - this.checkBoxIncludeVideo.Text = "Include Videos"; - this.checkBoxIncludeVideo.UseVisualStyleBackColor = true; - // - // ProcessForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.DarkGray; - this.ClientSize = new System.Drawing.Size(628, 266); - this.Controls.Add(this.checkBoxIncludeVideo); - this.Controls.Add(this.btnBatchName); - this.Controls.Add(this.infoLog); - this.Controls.Add(this.filesSelected); - this.Controls.Add(this.lblPercent); - this.Controls.Add(this.progressBar1); - this.Controls.Add(this.lblProgressBar); - this.Controls.Add(this.btnSelectFolder); - this.Controls.Add(this.btnSelectFile); - this.Controls.Add(this.btnAnalyze); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(2); - this.MinimumSize = new System.Drawing.Size(644, 305); - this.Name = "ProcessForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Analysis"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ProcessForm_FormClosing); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.Button btnAnalyze; - private System.Windows.Forms.Button btnSelectFile; - private System.Windows.Forms.Button btnSelectFolder; - private System.Windows.Forms.Label lblProgressBar; - private System.Windows.Forms.ProgressBar progressBar1; - private System.Windows.Forms.Label lblPercent; - private System.Windows.Forms.Label filesSelected; - private System.Windows.Forms.TextBox infoLog; - private System.Windows.Forms.Button btnBatchName; - private System.Windows.Forms.CheckBox checkBoxIncludeVideo; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.resx b/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.resx deleted file mode 100644 index e360cd0..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/ProcessForm.resx +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA - IACoJQAA7h4AAAAAAAABACAArT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Program.cs b/Computer Vision Toolkit/Computer Vision Toolkit/Program.cs deleted file mode 100644 index b709570..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace Computer_Vision_Toolkit -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); - } - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/AssemblyInfo.cs b/Computer Vision Toolkit/Computer Vision Toolkit/Properties/AssemblyInfo.cs deleted file mode 100644 index f4e5253..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("")] -[assembly: AssemblyDescription("Please submit all comments, concerns, or questions to the project's GitHub repository. \r\n\r\nGitHub: https://github.com/cvertdev/Computer-Vision-Emergency-Response-Toolkit")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Website: http://cver.hrail.crasar.org")] -[assembly: AssemblyProduct("Computer Vision Emergency Response Toolkit")] -[assembly: AssemblyCopyright("Copyright(c) 2018, Texas A&M Engineering Experiment Station")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("58d1e99e-3294-47a4-be32-ecdbecdea4bc")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Resources.Designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Resources.Designer.cs deleted file mode 100644 index b35f403..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Computer_Vision_Toolkit.Properties -{ - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Computer_Vision_Toolkit.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Resources.resx b/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Resources.resx deleted file mode 100644 index af7dbeb..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Settings.Designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Settings.Designer.cs deleted file mode 100644 index bda5107..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Settings.Designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Computer_Vision_Toolkit.Properties -{ - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { - return defaultInstance; - } - } - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Settings.settings b/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Settings.settings deleted file mode 100644 index 3964565..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.cs b/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.cs deleted file mode 100644 index 280481d..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.cs +++ /dev/null @@ -1,315 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows.Forms; - -using SystemLog; - -namespace Computer_Vision_Toolkit -{ - public partial class PythonCheckForm : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - private Settings settings; - private Process installProcess; - private bool is_python_installed = false; - private string[] default_python_path = { "%windir%\\py.exe", "%LocalAppData%\\Programs\\Python\\Python36\\python.exe", "%LocalAppData%\\Programs\\Python\\Python36-32\\python.exe", "%ProgramFiles%\\Python 3.6\\python.exe", "%ProgramFiles(x86)%\\Python 3.6\\python.exe" }; - - public PythonCheckForm(Settings set) - { - InitializeComponent(); - settings = set; - } - - private void PythonCheckForm_Load(object sender, EventArgs e) - { - try - { - //Create a background thread for the progress bar - BackgroundWorker worker = new BackgroundWorker(); - worker.DoWork += new DoWorkEventHandler(checkForPython); - worker.RunWorkerAsync(this); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private delegate void Bool(bool state); - private void SetEnabled(bool state) - { - try - { - btnClose.Enabled = state; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private void SetWaitCursor(bool state) - { - try - { - this.UseWaitCursor = state; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private delegate void Info(string str); - private void UpdateInfo(string str) - { - try - { - infoLabel.Text = str; - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private void checkForPython(object sender, DoWorkEventArgs e) //NOTE: LOOK INTO A BETTER METHOD OF CHECKING FOR VALID PYTHON INSTALLATIONS - { - try - { - //Check for Python - if (string.IsNullOrEmpty(settings.PythonPath) || !File.Exists(settings.PythonPath)) - { - //Check/Install required packages - Invoke(new Info(UpdateInfo), "Checking Python version..."); - string python_version = Process.Start(new ProcessStartInfo { FileName = Path.Combine(Environment.CurrentDirectory, "lib\\Setup\\checkPythonVersion.bat"), CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }).StandardOutput.ReadToEnd(); - if (python_version.Contains("Python 3.6") || python_version.Contains("Python 3.7")) - { - Invoke(new Info(UpdateInfo), "Checking Python version......OK"); - - //Console.WriteLine("...Checking Python Packages..."); - Invoke(new Info(UpdateInfo), "Checking Python packages..."); - string pip_list = Process.Start(new ProcessStartInfo { FileName = Path.Combine(Environment.CurrentDirectory, "lib\\Setup\\checkPythonPackages.bat"), CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true }).StandardOutput.ReadToEnd(); - - //string[] required_pkgs = { "opencv-python", "numpy", "scipy", "scikit-learn", "spectral", "pyparsing", "matplotlib" }; - List required_pkgs = new List(); - - string[] entries = File.ReadAllLines(@"lib\Setup\installPythonPackages.bat"); - foreach (string str in entries) - { - //Skip comment lines - if (str.StartsWith("::")) continue; - - //Remove any remaining comment sections - string pip_str = str.Split(':')[0]; - string[] pkg_str = pip_str.Split(' '); - - //Get a list of all packages that need to be installed - foreach( string s in pkg_str) - { - if (!s.Equals("pip3") && !s.Equals("install") && !string.IsNullOrEmpty(s) ) - { - required_pkgs.Add(s); - } - } - } - - - foreach (string str in required_pkgs) - { - Invoke(new Info(UpdateInfo), "Checking for " + str + "..."); - - if (!pip_list.Contains(str)) - { - Invoke(new Info(UpdateInfo), "Installing " + str + "..."); - Invoke(new Bool(SetWaitCursor), true); - //Process.Start(new ProcessStartInfo { FileName = Path.Combine(Environment.CurrentDirectory, "lib\\Setup\\installPythonPackages.bat"), CreateNoWindow = true, UseShellExecute = false }).WaitForExit(); - - //----------------------------------------------------------- - - ProcessStartInfo startConfig = new ProcessStartInfo(Path.Combine(Environment.CurrentDirectory, "lib\\Setup\\installPythonPackages.bat")); - startConfig.UseShellExecute = false; - startConfig.RedirectStandardOutput = true; - startConfig.RedirectStandardError = true; - startConfig.CreateNoWindow = true; - - installProcess = new Process { StartInfo = startConfig }; - - //Create output handlers - installProcess.OutputDataReceived += redirectHandler; - installProcess.ErrorDataReceived += redirectHandler; - installProcess.EnableRaisingEvents = true; - - //Start the python process - installProcess.Start(); - installProcess.BeginOutputReadLine(); - installProcess.BeginErrorReadLine(); - - //Wait for backend to finish, then clean up - installProcess.WaitForExit(); - - //----------------------------------------------------------- - - break; - } - } - - //Search for python path in the default install locations - foreach (string path in default_python_path) - { - if (File.Exists(Environment.ExpandEnvironmentVariables(path))) - { - settings.PythonPath = Environment.ExpandEnvironmentVariables(path); - break; - } - } - - Invoke(new Info(UpdateInfo), "Python Setup Complete..."); - settings.FirstRun = false; - is_python_installed = true; - //this.Close(); - } - else - { - Invoke(new Info(UpdateInfo), "Python 3.6.4 or greater is required to analyze images.\nYou may still view results without Python installed."); - is_python_installed = false; - } - } - else - { - Invoke(new Info(UpdateInfo), "Finished..."); - Invoke(new Bool(SetWaitCursor), false); - is_python_installed = true; - //this.Close(); - } - - //Re-enabled the close button - Invoke(new Bool(SetEnabled), true); - Invoke(new Bool(SetWaitCursor), false); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public void redirectHandler(object sendingProcess, DataReceivedEventArgs line) - { - // Collect the sort command output. - if (!string.IsNullOrEmpty(line.Data)) - { - try - { - Invoke(new Info(UpdateInfo), line.Data); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - - private void pythonLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - try - { - pythonLink.LinkVisited = true; - System.Diagnostics.Process.Start("https://www.python.org/downloads/release/python-364/"); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - private void btnClose_Click(object sender, EventArgs e) - { - try - { - this.DialogResult = (is_python_installed) ? DialogResult.Yes : DialogResult.No; - this.Close(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - public Settings GetSettings() - { - return settings; - } - - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.designer.cs deleted file mode 100644 index c7bf639..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.designer.cs +++ /dev/null @@ -1,103 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class PythonCheckForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PythonCheckForm)); - this.infoLabel = new System.Windows.Forms.Label(); - this.pythonLink = new System.Windows.Forms.LinkLabel(); - this.btnClose = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // infoLabel - // - this.infoLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.infoLabel.Cursor = System.Windows.Forms.Cursors.Default; - this.infoLabel.Location = new System.Drawing.Point(12, 18); - this.infoLabel.Name = "infoLabel"; - this.infoLabel.Size = new System.Drawing.Size(401, 59); - this.infoLabel.TabIndex = 0; - this.infoLabel.Text = "Please wait while we search for python..."; - this.infoLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // pythonLink - // - this.pythonLink.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.pythonLink.Cursor = System.Windows.Forms.Cursors.Hand; - this.pythonLink.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.pythonLink.Location = new System.Drawing.Point(12, 85); - this.pythonLink.Name = "pythonLink"; - this.pythonLink.Size = new System.Drawing.Size(287, 35); - this.pythonLink.TabIndex = 1; - this.pythonLink.TabStop = true; - this.pythonLink.Text = "Python 3.6.4 Download Page"; - this.pythonLink.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.pythonLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.pythonLink_LinkClicked); - // - // btnClose - // - this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnClose.Enabled = false; - this.btnClose.Location = new System.Drawing.Point(305, 86); - this.btnClose.Name = "btnClose"; - this.btnClose.Size = new System.Drawing.Size(87, 32); - this.btnClose.TabIndex = 2; - this.btnClose.Text = "Close"; - this.btnClose.UseVisualStyleBackColor = true; - this.btnClose.Click += new System.EventHandler(this.btnClose_Click); - // - // PythonCheckForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(425, 145); - this.Controls.Add(this.btnClose); - this.Controls.Add(this.pythonLink); - this.Controls.Add(this.infoLabel); - this.Cursor = System.Windows.Forms.Cursors.Default; - this.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(4); - this.MinimumSize = new System.Drawing.Size(441, 184); - this.Name = "PythonCheckForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Validating Python Install"; - this.Load += new System.EventHandler(this.PythonCheckForm_Load); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Label infoLabel; - private System.Windows.Forms.LinkLabel pythonLink; - private System.Windows.Forms.Button btnClose; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.resx b/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.resx deleted file mode 100644 index e360cd0..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/PythonCheckForm.resx +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA - IACoJQAA7h4AAAAAAAABACAArT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/SystemLog.cs b/Computer Vision Toolkit/Computer Vision Toolkit/SystemLog.cs deleted file mode 100644 index 1443fb7..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/SystemLog.cs +++ /dev/null @@ -1,164 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - - -using System; -using System.Collections.Generic; -using System.IO; -using System.Windows.Forms; - -namespace SystemLog -{ - //Errors - public class ErrorLog - { - // code, flag, description - private Dictionary> codes; - private string logFile; - - public ErrorLog() - { - try - { - logFile = Environment.CurrentDirectory + @"\lib\Logs\error.log"; - string[] code_str = File.ReadAllLines(Environment.CurrentDirectory + @"\lib\Logs\codes.ini"); - codes = new Dictionary>(); - - //Store codes in dictionary - foreach (string str in code_str) - { - if (str.StartsWith("#")) continue; - - string[] entry = str.Split(':'); - if (entry[0] == "e") - codes.Add(entry[1], Tuple.Create(entry[2], entry[3])); - else continue; - } - } - catch (Exception err) - { - MessageBox.Show( err.Message, "Error occurred when initializing the error reporting system", MessageBoxButtons.OK, MessageBoxIcon.Error ); - } - } - - public void Report(string code) - { - using (TextWriter w = File.AppendText(logFile)) { - w.WriteLine("[{0}] || {1} || {2} : {3}", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"), codes[code].Item1, code, codes[code].Item2 ); - w.Close(); - } - } - - public void Log(string func, string msg) - { - using (TextWriter w = File.AppendText(logFile)) - { - w.WriteLine("[{0}] || {1} || {2} : {3}", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"), "Error", func, msg); - w.Close(); - } - } - } //Error class - - - - - //General status updates - public class StatusLog - { - // code, flag, description - private Dictionary> codes; - private string logFile; - - public StatusLog() - { - try - { - logFile = Environment.CurrentDirectory + @"\lib\Logs\status.log"; - string[] code_str = File.ReadAllLines(Environment.CurrentDirectory + @"\lib\Logs\codes.ini"); - codes = new Dictionary>(); - - //Store codes in dictionary - foreach (string str in code_str) - { - if (str.StartsWith("#")) continue; - - string[] entry = str.Split(':'); - if (entry[0] == "s") - codes.Add(entry[1], Tuple.Create(entry[2], entry[3])); - else continue; - } - } - catch (Exception err) - { - MessageBox.Show(err.Message, "Error occurred when initializing the status reporting system", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - public void Report(string code) - { - using (TextWriter w = File.AppendText(logFile)) - { - w.WriteLine("[{0}] || {1} || {2} : {3}", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"), codes[code].Item1, code, codes[code].Item2); - w.Close(); - } - } - - public void Log(string str) - { - using (TextWriter w = File.AppendText(logFile)) - { - w.WriteLine("[{0}] || {1} : {2}", DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss"), "General", str); - w.Close(); - } - } - } //Status class - -} - - - - - - - - - diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/batchName.cs b/Computer Vision Toolkit/Computer Vision Toolkit/batchName.cs deleted file mode 100644 index c78322d..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/batchName.cs +++ /dev/null @@ -1,130 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using SystemLog; - -namespace Computer_Vision_Toolkit -{ - public partial class batchName : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - private string batch_name; - private string invalid_msg = "Invalid character"; - private string valid_msg = "Please name this batch"; - private string approved_characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789()_- "; - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public batchName(string default_batch_name) - { - InitializeComponent(); - - batch_name = default_batch_name; - - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void batchName_Load(object sender, EventArgs e) - { - textBox1.Text = batch_name; - batchLabel.Text = valid_msg; - button1.Enabled = true; - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void button1_Click(object sender, EventArgs e) - { - batch_name = textBox1.Text; - this.Close(); - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public String getText() - { - return batch_name; - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void textBox1_TextChanged(object sender, EventArgs e) - { - //Check user input - if(textBox1.Text.All(approved_characters.Contains)) - { - batchLabel.Text = valid_msg; - button1.Enabled = true; - } - else - { - batchLabel.Text = invalid_msg; - button1.Enabled = false; - } - - - } - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/batchName.designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/batchName.designer.cs deleted file mode 100644 index df6c9d7..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/batchName.designer.cs +++ /dev/null @@ -1,102 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class batchName - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(batchName)); - this.batchLabel = new System.Windows.Forms.Label(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.button1 = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // batchLabel - // - this.batchLabel.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.batchLabel.AutoSize = true; - this.batchLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.batchLabel.Location = new System.Drawing.Point(71, 9); - this.batchLabel.MinimumSize = new System.Drawing.Size(118, 13); - this.batchLabel.Name = "batchLabel"; - this.batchLabel.Size = new System.Drawing.Size(161, 18); - this.batchLabel.TabIndex = 0; - this.batchLabel.Text = "Please name this batch"; - this.batchLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter; - // - // textBox1 - // - this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBox1.BackColor = System.Drawing.Color.WhiteSmoke; - this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.textBox1.Location = new System.Drawing.Point(12, 34); - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(288, 24); - this.textBox1.TabIndex = 1; - this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // button1 - // - this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom; - this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; - this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.button1.Location = new System.Drawing.Point(108, 64); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(95, 29); - this.button1.TabIndex = 2; - this.button1.Text = "Select"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // batchName - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.DarkGray; - this.ClientSize = new System.Drawing.Size(312, 105); - this.Controls.Add(this.button1); - this.Controls.Add(this.textBox1); - this.Controls.Add(this.batchLabel); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MinimumSize = new System.Drawing.Size(328, 144); - this.Name = "batchName"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Select Batch Name"; - this.Load += new System.EventHandler(this.batchName_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label batchLabel; - private System.Windows.Forms.TextBox textBox1; - private System.Windows.Forms.Button button1; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/batchName.resx b/Computer Vision Toolkit/Computer Vision Toolkit/batchName.resx deleted file mode 100644 index e360cd0..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/batchName.resx +++ /dev/null @@ -1,681 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA - IACoJQAA7h4AAAAAAAABACAArT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Assets/icon.ico b/Computer Vision Toolkit/Computer Vision Toolkit/lib/Assets/icon.ico deleted file mode 100644 index 9116435..0000000 Binary files a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Assets/icon.ico and /dev/null differ diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/codes.ini b/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/codes.ini deleted file mode 100644 index 5fb6257..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/codes.ini +++ /dev/null @@ -1,191 +0,0 @@ -#Error Codes -#0000-0999 General error codes -e:0000:Error:An Unknown error has occurred -e:0001:Error:Read settings -e:0002:Error: -e:0003:Error: -e:0004:Error: -e:0005:Error: -e:0006:Error: -e:0007:Error: -e:0008:Error: -e:0009:Error: -e:0010:Error: -e:0011:Error: -e:0012:Error: -e:0013:Error: -e:0014:Error: -e:0015:Error: -e:0016:Error: -e:0017:Error: -e:0018:Error: -e:0019:Error: -e:0020:Error: -e:0021:Error: -e:0022:Error: -e:0023:Error: -e:0024:Error: -e:0025:Error: -e:0026:Error: -e:0027:Error: -e:0028:Error: -e:0029:Error: -#1000-1999 Self test errors -e:1000:Error:Main form general error -e:1001:Error:Read settings -e:1002:Error: -e:1003:Error: -e:1004:Error: -e:1005:Error: -e:1006:Error: -e:1007:Error: -e:1008:Error: -e:1009:Error: -e:1010:Error: -e:1011:Error:Checking Python Installation -e:1012:Error: -e:1013:Error: -e:1014:Error: -e:1015:Error: -e:1016:Error: -e:1017:Error: -e:1018:Error: -e:1019:Error: -e:1020:Error: -e:1021:Error: -e:1022:Error: -e:1023:Error: -e:1024:Error: -e:1025:Error: -e:1026:Error: -e:1027:Error: -e:1028:Error: -e:1029:Error: -#2000 -e:2000:Error:Main form general error -e:2001:Error:Read settings -e:2002:Error: -e:2003:Error: -e:2004:Error: -e:2005:Error: -e:2006:Error: -e:2007:Error: -e:2008:Error: -e:2009:Error: -e:2010:Error: -e:2011:Error: -e:2012:Error: -e:2013:Error: -e:2014:Error: -e:2015:Error: -e:2016:Error: -e:2017:Error: -e:2018:Error: -e:2019:Error: -e:2020:Error: -e:2021:Error: -e:2022:Error: -e:2023:Error: -e:2024:Error: -e:2025:Error: -e:2026:Error: -e:2027:Error: -e:2028:Error: -e:2029:Error: -#3000 -e:3000:Error:Main form general error -e:3001:Error:Read settings -e:3002:Error: -e:3003:Error: -e:3004:Error: -e:3005:Error: -e:3006:Error: -e:3007:Error: -e:3008:Error: -e:3009:Error: -e:3010:Error: -e:3011:Error: -e:3012:Error: -e:3013:Error: -e:3014:Error: -e:3015:Error: -e:3016:Error: -e:3017:Error: -e:3018:Error: -e:3019:Error: -e:3020:Error: -e:3021:Error: -e:3022:Error: -e:3023:Error: -e:3024:Error: -e:3025:Error: -e:3026:Error: -e:3027:Error: -e:3028:Error: -e:3029:Error: -#4000 -e:4000:Error:Main form general error -e:4001:Error:Read settings -e:4002:Error: -e:4003:Error: -e:4004:Error: -e:4005:Error: -e:4006:Error: -e:4007:Error: -e:4008:Error: -e:4009:Error: -e:4010:Error: -e:4011:Error: -e:4012:Error: -e:4013:Error: -e:4014:Error: -e:4015:Error: -e:4016:Error: -e:4017:Error: -e:4018:Error: -e:4019:Error: -e:4020:Error: -e:4021:Error: -e:4022:Error: -e:4023:Error: -e:4024:Error: -e:4025:Error: -e:4026:Error: -e:4027:Error: -e:4028:Error: -e:4029:Error: -#5000 -e:5000:Error:Main form general error -e:5001:Error:Read settings -e:5002:Error: -e:5003:Error: -e:5004:Error: -e:5005:Error: -e:5006:Error: -e:5007:Error: -e:5008:Error: -e:5009:Error: -e:5010:Error: -e:5011:Error: -e:5012:Error: -e:5013:Error: -e:5014:Error: -e:5015:Error: -e:5016:Error: -e:5017:Error: -e:5018:Error: -e:5019:Error: -e:5020:Error: -e:5021:Error: -e:5022:Error: -e:5023:Error: -e:5024:Error: -e:5025:Error: -e:5026:Error: -e:5027:Error: -e:5028:Error: -e:5029:Error: -# - -#Status Codes -s:0000:General:Something happened \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/error.log b/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/error.log deleted file mode 100644 index 5f28270..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Logs/error.log +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/checkPythonPackages.bat b/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/checkPythonPackages.bat deleted file mode 100644 index 055e60d..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/checkPythonPackages.bat +++ /dev/null @@ -1 +0,0 @@ -pip3 list \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/checkPythonVersion.bat b/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/checkPythonVersion.bat deleted file mode 100644 index b4fc09d..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/checkPythonVersion.bat +++ /dev/null @@ -1 +0,0 @@ -py -3 --version \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/installPythonPackages.bat b/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/installPythonPackages.bat deleted file mode 100644 index 476b69c..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Setup/installPythonPackages.bat +++ /dev/null @@ -1,23 +0,0 @@ -:: Install the python libraries with pip -:: openCV -pip3 install -v opencv-python opencv-contrib-python -:: NumPy -pip3 install -v numpy -:: SciPy -pip3 install -v scipy -:: Scikit-Learn -pip3 install -v scikit-learn -:: Spectral Python -pip3 install -v spectral -:: Matplotlib -pip3 install -v matplotlib - -::==================================================================================== -::--------------------For new algorithms add the new packages here-------------------- -::==================================================================================== -::Use: 'pip3 install -v ' - - - - - diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/algorithms.ini b/Computer Vision Toolkit/Computer Vision Toolkit/lib/algorithms.ini deleted file mode 100644 index a8937fe..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/algorithms.ini +++ /dev/null @@ -1,3 +0,0 @@ -RXD=0=1=2 -DebrisDetect=0=1=3 -Dehaze=0=0=1 \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/parameters.ini b/Computer Vision Toolkit/Computer Vision Toolkit/lib/parameters.ini deleted file mode 100644 index d6bb1d3..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/parameters.ini +++ /dev/null @@ -1,14 +0,0 @@ -RxThreshold=1=90=90 -RxChiThreshold=1=0.999=0.999 -LineGaussianIter=1=0=0 -LineDilationIter=1=1=1 -LineBilatBlurColor=1=75=75 -LineBilatBlurSpace=1=75=75 -LineCannyEdgeLowerBound=1=100=100 -LineCannyEdgeThreshold=1=140=140 -CornerGaussianIter=1=0=0 -CornerErosionIter=1=1=1 -CornerBilateralColor=1=200=200 -CornerBilateralSpace=1=500=500 -CornerMaxDistance=1=75=75 -CornerNumPoints=1=3=3 diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.cs b/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.cs deleted file mode 100644 index 215112f..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.cs +++ /dev/null @@ -1,136 +0,0 @@ -//============================================================================================= -//============================================================================================= -/* - License Agreement - For Computer Vision Emergency Response Toolkit - (BSD 3-Clause License) - - Copyright(c) 2018, Texas A&M Engineering Experiment Station - 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 the copyright holder 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 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. - -*/ -//============================================================================================= -//============================================================================================= - - - - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using SystemLog; - -namespace Computer_Vision_Toolkit -{ - public partial class resultDialog : Form - { - //Logging System - public ErrorLog elog = new ErrorLog(); - public StatusLog slog = new StatusLog(); - - public string Selection; - private Settings settings; - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public resultDialog(Settings _settings) - { - InitializeComponent(); - - settings = _settings; - - LoadBatches(); - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public void LoadBatches() - { - try - { - - string Path = settings.BatchesPath; - string[] directories = System.IO.Directory.GetDirectories(Path); - - for (int i = 0; i < directories.Length; i++) - { - int num_checked = System.IO.File.ReadAllLines(directories[i] + @"\checkbox.ini").Count(); - int num_total = System.IO.Directory.GetFiles(directories[i] + @"\Analyzed").Count(); - - dataGridView1.Rows.Add( System.IO.Path.GetFileName(directories[i]), num_checked, num_total ); - } - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - private void button1_Click(object sender, EventArgs e) - { - try - { - if(dataGridView1.SelectedRows.Count > 0) - { - string temp = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); - Selection = System.IO.Path.Combine(settings.BatchesPath, temp); - } - this.Close(); - } - catch (Exception err) - { - elog.Log(err.TargetSite.ToString(), err.Message); - //MessageBox.Show(err.Message); - } - } - - //=================================================================================================================== - //------------------------------------------------------------------------------------------------------------------- - //=================================================================================================================== - - public string getSelected() - { - return Selection; - } - } -} diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.designer.cs b/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.designer.cs deleted file mode 100644 index 63185ab..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.designer.cs +++ /dev/null @@ -1,178 +0,0 @@ -namespace Computer_Vision_Toolkit -{ - partial class resultDialog - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(resultDialog)); - this.label1 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.dataGridView1 = new System.Windows.Forms.DataGridView(); - this.Batch = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Checked = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Total = new System.Windows.Forms.DataGridViewTextBoxColumn(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); - this.SuspendLayout(); - // - // label1 - // - this.label1.Anchor = System.Windows.Forms.AnchorStyles.Top; - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.label1.Location = new System.Drawing.Point(158, 9); - this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(228, 18); - this.label1.TabIndex = 0; - this.label1.Text = "Please Select an Analysis to View"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // button1 - // - this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom; - this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; - this.button1.FlatStyle = System.Windows.Forms.FlatStyle.System; - this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - this.button1.Location = new System.Drawing.Point(212, 206); - this.button1.Margin = new System.Windows.Forms.Padding(2); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(112, 37); - this.button1.TabIndex = 2; - this.button1.Text = "Select"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // dataGridView1 - // - this.dataGridView1.AllowUserToAddRows = false; - this.dataGridView1.AllowUserToDeleteRows = false; - this.dataGridView1.AllowUserToResizeRows = false; - this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle1.BackColor = System.Drawing.Color.Gainsboro; - dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.Batch, - this.Checked, - this.Total}); - dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle5.BackColor = System.Drawing.Color.WhiteSmoke; - dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F); - dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText; - dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle5; - this.dataGridView1.Location = new System.Drawing.Point(12, 30); - this.dataGridView1.MultiSelect = false; - this.dataGridView1.Name = "dataGridView1"; - this.dataGridView1.ReadOnly = true; - this.dataGridView1.RowHeadersVisible = false; - this.dataGridView1.RowTemplate.Height = 25; - this.dataGridView1.RowTemplate.ReadOnly = true; - this.dataGridView1.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridView1.ShowEditingIcon = false; - this.dataGridView1.Size = new System.Drawing.Size(506, 165); - this.dataGridView1.TabIndex = 3; - // - // Batch - // - this.Batch.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - this.Batch.DefaultCellStyle = dataGridViewCellStyle2; - this.Batch.FillWeight = 60F; - this.Batch.HeaderText = "Batch"; - this.Batch.Name = "Batch"; - this.Batch.ReadOnly = true; - this.Batch.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Programmatic; - // - // Checked - // - this.Checked.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.Checked.DefaultCellStyle = dataGridViewCellStyle3; - this.Checked.FillWeight = 20F; - this.Checked.HeaderText = "Checked"; - this.Checked.Name = "Checked"; - this.Checked.ReadOnly = true; - // - // Total - // - this.Total.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - this.Total.DefaultCellStyle = dataGridViewCellStyle4; - this.Total.FillWeight = 20F; - this.Total.HeaderText = "Total"; - this.Total.Name = "Total"; - this.Total.ReadOnly = true; - // - // resultDialog - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.BackColor = System.Drawing.Color.DarkGray; - this.ClientSize = new System.Drawing.Size(530, 254); - this.Controls.Add(this.dataGridView1); - this.Controls.Add(this.button1); - this.Controls.Add(this.label1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(2); - this.MinimumSize = new System.Drawing.Size(546, 293); - this.Name = "resultDialog"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "View Analysis Results"; - ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.DataGridView dataGridView1; - private System.Windows.Forms.DataGridViewTextBoxColumn Batch; - private System.Windows.Forms.DataGridViewTextBoxColumn Checked; - private System.Windows.Forms.DataGridViewTextBoxColumn Total; - } -} \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.resx b/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.resx deleted file mode 100644 index ab17496..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/resultDialog.resx +++ /dev/null @@ -1,690 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - True - - - True - - - True - - - - - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA - IACoJQAA7h4AAAAAAAABACAArT0AAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA - AAAAAAAA57lcgefAaPHnw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Nt/+fDbf/nw23/58Js/+rJ - fv/qxXfx57hbgefAaPDo0ob/6NSK/+jUif/o1In/6NSJ/+jUif/o1In/6NSJ/+jUif/o1Ir/6NOI/+zc - oP/79+n/+vPh/+zIfvDnw23/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+vZ - mP/59eP///////368v/tzYj/58Nt/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+jTiP/o04j/6NSJ/+nX - kf/38Nf///////79+v/157//6sV0/+fDbf/o1Ir/6NSK/+jUiv/o1In/6deR/+3epP/v4a3/7d6l/+rX - kv/z6cP////+///+/f/37Mv/8Nqb/+rFdP/nw23/6NSK/+jUiv/o1Ir/7+Cr//fv0v/27cv/9OnC//Xs - yv/379P/9+/T//357//58Nf/8duf//DZmv/qxXT/58Nt/+jUiv/o1In/7+Gt//Xu0v/h0pr/2siE/9rH - gv/ayIT/49Kd//fu1f/37Mz/8dyi//Damv/w2pr/6sV0/+fDbf/o04n/6tiU//fw1P/i0pj/e3FY/2Jb - Tv9jXE//YltP/3ZsWv/i0J7/+vLa//Lfp//w2pr/8Nqa/+rFdP/nw23/6NOI/+/hrP/06sX/3cqE/2Vd - UP9EQEH/R0JC/0VAQf9eV07/3smQ//jsyP/1577/8NmZ//Damv/qxXT/58Nt/+jTiP/x5bj/8eW3/+XR - h/+lmG3/dGta/4F2Yf91a1r/opRy/+vVl//15rv/9+vI//DZmv/w2pr/6sV0/+fDbf/o04j/8OOz//Ln - vf/o1In/7tmT/7Kiev9mXlP/qZp2//Hbm//w2pn/9ujB//bpxP/w2Zn/8Nqa/+rFdP/nw23/6NOI/+zb - nf/27tH/7dmZ//Damv+MgWf/QDw//4F2Yf/u2Zr/8due//nw1v/z4rD/8Nqa//Damv/qxXT/58Nt/+jU - if/o1Iv/9erF//fsy//y3J//wrCB/3ZsWv+5qX3/8dyd//bqxv/47c//8Nud//Dam//w2pr/6sV0/+fD - bf/o1Ir/7NeS//DcoP/47c3/+fDV//Xmu//u3a//9OW5//nv0//47tH/8d2i//Damv/w2pv/8Nqb/+rF - dP/nwGnw69SO//Damv/w2Zr/8Nqc//Tjs//368n/+O7Q//fryv/047X/8Nud//DZmv/w2pr/8Nqb/+/X - lv/pwm7w57lcgenCbvHqxXT/6sV0/+rFdP/qxXL/6sVz/+rFdP/qxXP/6sVy/+rFdP/qxXT/6sV0/+rF - dP/pwm7x57ldgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAA57dYKOa3 - WbHmul755rtg/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7X//mu1//5rtf/+a7 - X//mu1//5rtg/+a6X//mu2D/5rpe+ea2WLHnt1go5rdZsefDbf/oz4L/6NGE/+jRhP/o0YT/6NGE/+jR - hP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NGE/+jRhP/o0YT/6NCD/+vWk//268v/9ObA/+rH - ev/nt1ix5rpe+OjPgv/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6teT//jy2/////////////frzf/ou2L45rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/p1Y7/9e3O//// - /v////////////nw2v/ovWb/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6MD//v78/////////////fvz//Leqv/nu2H/5rtg/+jR - hP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Dj - s//+/Pj////////////+/Pj/9ea9/+/Vkv/nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04j/6NSL/+nWkP/q15L/6dWO/+jUif/o04j/7t+o//z68v/////////////+/P/36sf/8Nqc/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rXkv/w5LX/9/DV//r14//69uX/+fTg//Xs - y//t3qX/8+i///7++//////////+//jv0//w253/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jU - iv/o1In/7d6l//n04P/69uf/9OrH//Disf/v4Kz/8eW3//bv0//7+Oz/9+/T//ftzf/+/Pf/+vPe//Hc - of/w2pr/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+jUif/u36f/+/jr//Xsyv/t2pb/6taK/+rW - if/q1on/6taJ/+vXjf/z4qz//Pbl//rz3v/15rv/8t6m//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Ir/6NSJ/+rYlv/69eX/9evG/9C/gf+nmWz/p5lt/6eZbf+nmW3/p5lt/6iacP+1pHr/69ij//z2 - 5//47c7/8Nqb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ//PowP/59OD/7NmS/62f - b/9KRUT/SURE/0lERP9JRET/SURE/0hDQ/9gWVD/3smQ//Xltv/8+e7/8+Ct//Damv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6daP//n04f/x5bj/6taJ/62fcP9KRUT/SkVE/0pFRP9KRUT/SkVE/0lE - Q/9gWVD/3sqR//Lcnv/79OH/9+vI//DZmv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/69qa//v3 - 6f/t3KH/6taK/7mqdf9PSkb/R0JC/0lERP9MR0X/SEND/0ZBQv9tZVb/5M+V//Hamv/47c7/+fHa//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1In/7Nyf//v36f/r2pv/6NSJ/+PPiP+un3D/fnRe/5GF - af+nmHX/g3hi/4yAZ//Nuon/8Nqb//DZmf/36sb/+vPf//DanP/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1In/69qa//v36f/s3KD/6NOJ/+nUi//v2ZT/3sqR/4V6Y/9nX1P/qJp2/+7Zmv/y3Jz/8Nqb//DZ - mv/47c3/+vHb//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6daQ//n04f/x5bf/6NOI/+zX - kv/y3Jz/sKF6/0lERP9HQkL/YFlP/9zIkf/x25z/8Nqb//Dbnf/69OD/9+vJ//DZmv/w2pv/8Nqb/+/W - k//nu2L/5rtg/+jRhP/o1Ir/6NSJ//Powv/589//7dmY//Damv/z3Jz/p5h1/0hDQ/9JREP/WVJM/9fD - jv/y25z/8NmZ//TjtP/8+e7/8+Gu//Damv/w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSJ/+vZ - mP/79uf/9+zL//DanP/x25v/08CM/2ZeU/9NSEb/jIBn/+vWmP/w2pr/8t6l//v15f/47tH/8Nqc//Da - m//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jRhP/o1Ir/6NSK/+zWkf/05LX//fnv//jtzv/x3aP/8Nqa/9fD - jP/DsoL/5dCU//Hbm//z4a7/+/Xj//r04P/x3aP/8Nqa//Dam//w2pv/8Nqb/+/Wk//nu2L/5rtg/+jR - hP/o1Iv/7NeS//Damv/w2pr/9OO0//v25//89+j/9+zM//bmuv/25rb/9ui///nw1//9+e//+fDX//Hd - pP/w2pr/8Nqb//Dam//w2pv/8Nqb/+/Wk//nvGL/5rpe+OjQg//s15P/8Nqb//DanP/w2pv/8Nqa//Hd - pP/26cP/+vPf//z36f/8+Ov/+/bn//nw1v/05Lb/8Nud//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+7V - kf/numD45rdYsejEcf/u1JD/79aT/+/Wk//v1pP/79aT/+/Wk//v1ZL/79aV//DYmv/w2Zv/8NiY/+/W - k//v1ZL/79aT/+/Wk//v1pP/79aT/+/Wk//v1pP/7tWR/+rFdf/nt1mx57ZYKee3WbLnumD66Lxi/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+e7Yv/nu2L/57ti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ovGL/57pg+ue3WbLntlcpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA - AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAOq6WgPnt1hX5rZX0ua2WPzmtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZY/+a2Vv/mtlf85rZX0ue3WFfquloD57dYV+a3WejnwWr/58l4/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fKef/nynn/58p5/+fK - ef/nynn/58p5/+fKef/nynn/58p5/+fKeP/pzID/7tec/+3Tk//nwWv/5rdZ6Oe3WFfmtlfQ58Fq/+jT - iP/o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jV - i//o1Yv/6NWL/+jVi//o1Yv/6NWL/+jVi//o1Ir/6daQ//bu0f////7//f34//XpxP/qxHL/5rZX0Oa2 - WPvnyXj/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUi//z6cT///79///////////////9//Ha - pf/mtlf75rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS3//79+f////////////// - ////////896w/+a2V//mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+7gqv/9+/P///////// - //////////////z36f/u0pD/5rZY/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/s3J//+/js//// - ///////////////////9+fD/8+Kw/+zOg//mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/69mX//n0 - 4f///////////////////////vz2//Tluf/w2pv/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o04j/6NOI/+jTiP/o04j/6NOI/+jTiP/o1In/6NSK/+nX - kf/38Nb///////////////////////79+//26cP/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o1In/6deR/+3epf/x5bn/9OrF//Tqxv/y5rz/7t+p/+rY - lP/o04j/8ua6///+/f///////////////////v7/+O3P//Dbnf/w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6deR//Hluf/69ub//v35//789//8+vL//Prx//38 - 9//+/fn/+/fq//Powf/u36j/+fLd/////v////////////nx2v/x3KD/8Nqa//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zbnv/4897//v37//n04P/x5bn/7d2h/+vZ - mP/r2Zf/7Nyf//DjtP/48dr//v35//v25//15rv/+e/V///+/f/79eX/8t6l//Damv/w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1Ir/6NSK/+jUif/s3KD/+/fq//z68v/x5bf/6taQ/+jU - iP/o1In/6NSJ/+jUif/o1In/6NSI/+nWjv/z5LT//fnu//378//15rv/9ujB//PgrP/w2pr/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jUiv/o1In/6tiV//n14//8+e//7d6m/+HN - hf/ey4X/38yG/9/Mhv/fzIb/38yG/9/Mhv/fzIb/4s6N/+fSlf/x36v//Pfp//358P/y4Kv/8NmZ//Da - m//w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSK/+jUiv/06sX//v34//Di - r//jz4b/in9g/2lhUf9qYlL/amJS/2piUv9qYlL/amJS/2tiU/9qYlX/f3Rg/+LNkv/047H//fv0//ry - 2//w253/8Nqb//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/69qa//z6 - 8P/279P/6dWM/+LPh/9wZ1X/RkFC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0ZCQv9gWU//38uS//Hb - m//37Mz//v35//Tjs//w2pr/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jT - iP/x5bf//v35/+7fqP/o1Ij/4s+H/3FpVf9IQ0P/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2Ja - UP/fy5L/8dub//Lgqv/9+/X/+O7Q//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jV - i//o1Ir/6NSK//bu0f/7+Oz/6teT/+jUiv/jz4j/cmlV/0dCQ/9KRUT/SkVE/0lERP9JRET/SkVE/0pF - RP9IQ0P/YVpQ/+DLkv/x25v/8Nud//v14//79uX/8Nue//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2 - Wf/nynn/6NWL/+jUiv/p1Y3/+fPf//nz3v/p1Y3/6NSK/+jUiv+fkmr/UEtH/0dCQ/9IQ0P/VU9K/1hS - S/9JREP/R0JC/01HRf+QhGn/7NaZ//Dam//w2pr/+e/V//357//x3aP/8Nqa//Dam//w2pv/8Nuc/+3O - hP/mtln/5rZZ/+fKef/o1Yv/6NSK/+nVjv/59eP/+PLa/+jVi//o1Ir/6NSK/+TQiP+7rHf/jYFl/46C - aP++rYH/w7KE/5aKbP+IfWX/uKd9/+jTl//x25v/8Nqb//Damv/47tH//frx//Hepf/w2pr/8Nqb//Da - m//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NWM//jy3P/59OH/6dWO/+jUiv/o1Ir/6NSK/+7Z - k//w2pv/u6uA/3BnWP9qYlX/rZ54/+3Ymv/z3Jz/8dub//Dam//w2pv/8Nqb//nx2P/8+O3/8d2i//Da - m//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jUiv/o1In/9ezL//z68P/r2Zf/6NSJ/+jU - iv/s15L/8dub/9rHkP9iW1H/R0JC/0dDQ/9WUEr/yriH//LcnP/w2pv/8Nqb//Dam//x3KD//Pfo//r0 - 4f/w253/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fKef/o1Yv/6NSK/+jTiP/v4a///v36//Dj - sv/o04j/7NeS//Dam//z3J3/va2B/01HRf9KRUT/SkVE/0hDQ/+nmHX/89yc//Dam//w2pv/8Nma//Pi - sf/+/fj/9+vI//Damv/w2pv/8Nqb//Dam//w25z/7c6E/+a2Wf/mtln/58p5/+jVi//o1Ir/6NSJ/+rX - k//69uf/+fTg/+3Zmf/w2pr/8Nqb//PcnP/DsYP/T0lG/0pFRP9KRUT/SURE/62eeP/z3Jz/8Nqb//Da - m//w253/+fHY//379P/y4Kv/8Nqa//Dam//w2pv/8Nqb//DbnP/tzoT/5rZZ/+a2Wf/nynn/6NWL/+jU - iv/o1Ir/6NSJ//Hktv/+/fr/9+zL//Dam//w2pv/8dub/+POlP90alr/RkJC/0ZCQv9kXFH/18SO//Hb - nP/w2pv/8Nqa//Xnv//+/fr/+O3N//Dam//w2pv/8Nqb//Dam//w2pv/8Nuc/+3OhP/mtln/5rZZ/+fK - ef/o1Yv/6NSK/+jUiv/o1Ir/7NiW//nw1//+/fn/9urG//Dbnf/w2pr/8dub/9TBjf+QhGn/in5m/8m3 - h//x25v/8Nqa//Dam//15rz//vv1//v14//x3aP/8Nqa//Dam//w2pv/8Nqb//Dam//w25z/7c6E/+a2 - Wf/mtln/58p5/+jVi//o1Ir/6NSK/+zXkv/w2pr/8d2j//ry3P/+/fv/+fDY//PgrP/w2pz/8dua//Da - mf/v2Zn/8dua//Dam//y36j/+O3P//79+f/79ub/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Db - nP/tzoT/5rZZ/+a2Wf/nynn/6NSL/+jUiv/s15L/8Nqa//Dam//w2pr/8dyh//fszf/+/Pf//vz2//ry - 3P/26sX/9ea6//Xluv/26cP/+fHY//368v/+/fn/+fDW//Lepf/w2pr/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nuc/+3OhP/mtln/5rZY++fJeP/o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pr/8Nqb//Ph - r//479L//Pjt//78+P/+/fr//v36//79+f/9+fD/+fHY//TjtP/w253/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w25z/7M2C/+a2WPvmtlfR58Fq/+zWkP/w2pz/8Nuc//DbnP/w25z/8Nuc//Db - nP/w25z/8Nqb//DbnP/x3aP/8+Gu//Tktv/05Lf/8+Kw//Lepf/w253/8Nqb//DbnP/w25z/8Nuc//Db - nP/w25z/8Nuc//DbnP/w25z/8Nuc//DZmf/pw3D/5rZX0Oe3WFfmt1ro6cNv/+zNg//tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szoP/7M2D/+zNg//szoP/7c6E/+3OhP/tzoT/7c6E/+3O - hP/tzoT/7c6E/+3OhP/tzoT/7c6E/+3OhP/szYL/6cNv/+a3Wujnt1hX6rpaA+e3WFfmtlfS5rZY/Oa2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2 - Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2Wf/mtln/5rZZ/+a2WPzmtlfS57dYV+q5WgMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA - AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAADsu1oA98RfAei4WTXnt1ik57ZY6ua2 - WP7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlj+5rZY6ue3WKTouFk1+MJeAey7WgDGnkwA6LdZTea2 - WNvmtlj/5rhb/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpf/+a6 - X//mul//5rpf/+a6X//mul//5rpf/+a6X//mul//5rpe/+a6Xv/muV3/5rhb/+a2WP/mtljb6LdZTced - SwDouFk25rZY2ua3Wf/nwmv/6M1//+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jR - hf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/6NGF/+jRhf/o0YX/7dug//Pmvv/x4rP/6dGJ/+fB - a//mt1n/5rZY2ui4WTXnt1ik5rZY/+fCa//o04j/6NSL/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/w4rH//fv0//// - //////7/+fPf//DdpP/qxHH/5rZY/+e3WKTmtljp5rhb/+jNf//o1Iv/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pf/8+vD///////////////////////z47P/x2Z//5rhb/+a2WOnmtlj+5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/69qc//r25//////////////////////////////////47M//57ti/+a2V/7mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUif/q2JT/+PLc///////////////////////////////////////58Nn/6Lxj/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+nWj//27tD////////////////////////////////////////+ - /f/15r3/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSL//Ppw//+/vz///////////////////////// - //////////////nw1//w2Jj/57th/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/8eS1//79+P////////////// - ////////////////////////+/Th//HdpP/v1pP/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/u36n//frz//// - ///////////////////////////////////89+r/8t+q//Damv/v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+zc - n//79+r///////////////////////////////////////368v/z47L/8Nqa//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6tmW//n04P///////////////////////////////////////vz4//XmvP/w2pr/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/o04j/6NOI/+jUiv/o1Yz/6dWO/+nVjf/o1Iv/6NOJ/+jT - iP/o1In/6NSK/+jUiv/p15H/9+/U/////////////////////////////////////////vz/9+rH//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6NSJ/+rXkv/u36f/8ue+//bu0f/48tv/+fPf//jy - 3f/379T/8+nD/+/hrf/q2Jb/6NSK/+fTh//w4rH//v36//////////////////////////////////// - /v/479P/8Nue//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/r2Zj/8+i///r25v/+/fr///////// - //////////////////////////////7+/P/7+Oz/9evK/+zcn//p15H/9OrH//79+v////////////// - //////////////rz3v/x3KL/8Nqa//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1In/6dWO//Hktv/7+Ov////+//// - ///+/Pj/+vbl//bv0v/06sX/8+jA//Ppw//17c//+fTg//379P////7///////368//z6cT/7tue//bp - wv/+/Pb/////////////////+/bn//Lfp//w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUif/q2JT/9u3P//7+ - +////////Prx//Tryf/t3qT/6deR/+jUiv/o04n/6NOI/+jTiP/o1Ir/6daP/+zbnv/y57//+/fp//// - /v////7/+/Xj//PgrP/05bj//fnw///////9+fD/8+Gv//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+rY - lf/48dn///////7+/P/379T/7Nue/+jUiv/o04j/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - if/o04n/69mX//bsy//+/Pj///////z47P/z4a7/8+Gv//r04P/15bn/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1In/6daR//fw1f///////vz4//Pov//p1o7/6NSJ/+jUiv/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/p1Yv/7deT//Dam//15rr//fry///////89+r/8t+p//Hbnv/w2pz/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+jUiv/o1Ir/8+nC/////v/+/fr/8ua8/+jUi//k0Ij/4s+H/+LPh//iz4f/4s+H/+LP - h//iz4f/4s+H/+LPh//iz4f/4s+H/+LPiP/m0pD/6tSX/+vVmP/v2Zr/9OS2//378///////+vPd//Hc - n//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/t3aT//fv0///////068n/6NWM/+bTif+ZjGf/cGhV/3Jp - Vv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JpVv9yaVb/cmlW/3JqVv90a1r/c2pa/4d8ZP/k0JX/8dqa//Xn - v//+/fr///79//bpwv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jVjP/379T///////r15f/q2JX/6NSJ/+bS - if98c1r/RUBC/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/SEND/0hDQ/9IQ0P/RkFC/2Ja - UP/gzJP/8dub//Dbnf/58Nf///////z46//x3qX/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ/+3dov/9+/b///79//Dj - tP/o04j/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SERD/2RcUf/gzJP/8duc//Damv/z4a7//fv1/////v/26MH/8Nma//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Pp - wv//////+vbo/+rXk//o1In/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SERD/2RcUf/gzJP/8duc//Dam//w2pz/+fHZ///////689//8Nud//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6dWO//jz3v//////9OvJ/+jUif/o1Ir/6NSK/+bSif9+dFv/R0ND/0pFRP9KRUT/SkVE/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SERD/2NcUf/gzJP/8duc//Dam//w2Zn/9ea9//// - /v/9+vL/8t+o//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mX//z57v////7/8OKx/+jTiP/o1Ir/6NSK/+bTif9/dVv/R0JD/0pF - RP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SkVE/0pFRP9KRUT/SEND/2RcUv/hzZP/8dub//Da - m//w2pr/8uCr//779f///vz/9OS1//DZmv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04n/7Nyg//389//+/fj/7d2i/+jTif/o1Ir/6NSK/+nV - i/+kl2z/TEdF/0hDQ/9KRUT/SkVE/0pFRP9IQ0P/SEND/0hDQ/9JRET/SkVE/0pFRP9JREP/SEND/4l+ - Zf/s1pn/8Nqb//Dam//w2pv/8d2i//z47P//////9ujA//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7d6m//79+v/9+/T/7Nuc/+jU - if/o1Ir/6NSK/+jUiv/izof/opVr/2FaTv9LRkT/R0JD/01IRv9xaFj/nI9v/350X/9TTUn/R0ND/0pF - RP9aU0z/koVq/9/Lkv/x25z/8Nqb//Dam//w2pv/8dyf//v25///////9urG//DZmf/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o04j/7t6m//79 - +//9+/T/7Nuc/+jUif/o1Ir/6NSK/+jUiv/p1Yr/6dSK/9XCgv+xonf/koZq/7Oje//gy5L/486U/+PO - lP/DsoT/koZq/6madv/SwIz/7tia//HbnP/w2pv/8Nqb//Dam//w2pv/8duf//v25v//////9+rG//DZ - mf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o04n/7Nyh//389//+/Pj/7d2h/+jTif/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+3Yk//y3Jz/8tyc/8u5 - iP9/dWD/Y1xR/3NqWv+4qH7/79ma//PcnP/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8d2i//z4 - 7P//////9ujB//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1In/69mY//z57/////7/7+Kv/+jTiP/o1Ir/6NSK/+jUiv/o1Ir/7NeS//Da - mv/y3Jz/0L2K/2JaUP9HQkL/SEND/0dDQ/9TTUn/tqZ9//HbnP/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pr/8t+q//379f///vz/9OS2//DZmf/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6daO//nz3///////9OrH/+jUif/o1Ir/6NSK/+jU - iv/s15L/8Nqa//Dam//v2Zr/jYJn/0dCQ/9KRUT/SkVE/0pFRP9HQ0P/b2ZX/+XQlf/x25v/8Nqb//Da - m//w2pv/8Nqb//Dam//w2Zn/9ea7///+/v/9+/P/8t+p//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSJ//Tpxf//////+vbl/+rX - kv/o1In/6NSK/+zXkv/w2pr/8Nqb//Hbm//kz5X/aWFV/0hDQ/9KRUT/SkVE/0pFRP9JRET/VE5J/868 - if/y3Jz/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/+fDX///////79OH/8Nue//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NOJ/+3e - pP/9/Pf//v78//DisP/o04n/7NeS//Damv/w2pv/8Nqb//HbnP/gzJP/Y1xR/0hEQ/9KRUT/SkVE/0pF - RP9KRUT/UUtI/8e2hv/y3Jz/8Nqb//Dam//w2pv/8Nqb//Damv/y4Kv//fvz///////26cT/8Nqa//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/6NSK/+nVjf/38Nj///////n04v/t2pr/8Nqa//Dam//w2pv/8Nqb//Dam//p05f/c2pa/0dD - Q/9KRUT/SkVE/0pFRP9JREP/W1RN/9bDjv/y25z/8Nqb//Dam//w2pv/8Nqb//DanP/579T///////z5 - 7v/y3qb/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jTif/u36f//fz2/////v/37M3/8Nqc//Dam//w2pv/8Nqb//Da - m//x25z/p5h1/0pFRP9JRUT/SkVE/0pFRP9HQkL/hntk/+zXmf/w2pv/8Nqb//Dam//w2pv/8Nqa//Xm - u//+/fn////+//bqxv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/o1Yv/9uzK///////+/fn/9ujB//Da - m//w2pv/8Nqb//Dam//x25v/5dCV/4Z7ZP9MR0X/R0ND/0lERP9vZ1j/1cKN//HbnP/w2pv/8Nqb//Da - m//w2pr/8+Kx//368P//////+/Th//Hcof/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+jUiv/s15H/8dyi//rz - 4P///////vz3//bpw//w253/8Nqa//Dam//w2pv/8duc/+bRlv+1pXz/l4ps/6qbdv/dyZH/8duc//Da - m//w2pv/8Nqa//Damv/05LX//fnu///////8+e7/8+Gt//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jUiv/o1Ir/6NSK/+zX - kv/w2pr/8Nqa//LfqP/79eT///////79+//579T/8t+o//Damv/w2pr/8Nqb//Hbm//y3Jz/8tyc//Lc - nP/x25z/8Nqb//Damv/w2Zr/8d2i//fryP/++/X///////358P/047P/8Nqa//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jRhf/o1Ir/6NSK/+jU - iv/o1Ir/7NeS//Damv/w2pv/8Nqb//Damv/y3qb/+vLc///+/f///////fnv//fsy//z4Kz/8due//Da - mv/w2Zn/8NmZ//DZmf/w2pr/8Nud//LfqP/26ML/+/bn///+/f///////Pfo//Pisf/w2pr/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2V//mtlf/5rpf/+jR - hf/o1Ir/6NSK/+jUiv/s15L/8Nqa//Dam//w2pv/8Nqb//Dam//w2pr/8dyg//fqx//9+vL///////// - ///+/Pb/+/Xk//ju0v/36sf/9unD//bqxf/47c//+vPf//368v////7///////78+P/479P/8t6m//Da - mv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//v1pT/57ti/+a2 - V//mtlj+5rpf/+jRhf/o1Ir/6NSK/+zXkv/w2pr/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - mv/y4Kv/+O3P//z57v///v3//////////////////////////////////////////v/9+/P/+fHY//Tj - s//w2pz/8Nqa//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//v1pT/57th/+a2V/7mtljp5rhb/+jNf//o1Yv/7NeS//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pr/8Nqb//Lepf/15bn/+O3O//rz3v/79ub//Pfp//v25//69OD/+O/T//Xn - v//y36n/8Nqc//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//DbnP/u0oz/57hc/+a2WOnnt1ik5rZY/+fCa//r1pD/8Nqb//DanP/w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pr/8Nqa//Dbnf/x3J//8dyh//Hc - oP/w253/8Nqb//Damv/w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Dam//w2pv/8Nqb//Da - m//w2pv/8Nqb//Dam//w2pv/8Nuc//DZmf/qxHL/5rZY/+e3WKTot1k25rZY2ua3Wf/qxHL/7tKN/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/79aU/+/W - lP/v1pT/79aU/+/WlP/v1pT/79aU/+/WlP/v1pT/7tKM/+rEcv/mt1n/5rZY2ui4WTbFnEoA6LdZTua2 - WNvmtlj/57hc/+e7Yf/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7 - Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/ou2L/6Lti/+i7Yv/nu2H/57hc/+a2WP/mtljb6LdZTsaf - SADsu1oA+MReAei4WTXnt1il5rZY6ua2V/7mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2V//mtlf/5rZX/+a2 - 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 - - - \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/settings.ini b/Computer Vision Toolkit/Computer Vision Toolkit/settings.ini deleted file mode 100644 index 300d9d8..0000000 --- a/Computer Vision Toolkit/Computer Vision Toolkit/settings.ini +++ /dev/null @@ -1,6 +0,0 @@ -FirstRun=True -RunPOST=False -PythonPath= -BatchesPath= -LibPath= -AllowMultiThread=False diff --git a/Computer Vision Toolkit/Setup/Setup.vdproj b/Computer Vision Toolkit/Setup/Setup.vdproj deleted file mode 100644 index 367fcd4..0000000 --- a/Computer Vision Toolkit/Setup/Setup.vdproj +++ /dev/null @@ -1,1485 +0,0 @@ -"DeployProject" -{ -"VSVersion" = "3:800" -"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" -"IsWebType" = "8:FALSE" -"ProjectName" = "8:Setup" -"LanguageId" = "3:1033" -"CodePage" = "3:1252" -"UILanguageId" = "3:1033" -"SccProjectName" = "8:" -"SccLocalPath" = "8:" -"SccAuxPath" = "8:" -"SccProvider" = "8:" - "Hierarchy" - { - "Entry" - { - "MsmKey" = "8:_2EA50A303EBD49E3964D98A5C79C0254" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_32D01F06B3E84E2E9198BD417482E538" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_3850A5AB68D040DC9016B6286C2B496A" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_470E181C544180A7CDE7B6647B002F81" - "OwnerKey" = "8:_854F61495F354904B0815DAD370F2DC3" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_4E4DA446CA364566A820B8CFD6B0FEC3" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_554A136BB7D54969AE10A729A3D25E4A" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_5A557F9E46E3428598E4E8EBDAF2DEBB" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_66B283C62DFF4E5C93AC1063FD485870" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_758541C5BA0244F49D2A4D1E0C0BBDB2" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_7A0EABE22AB440A4B7FE7D850AA934B0" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_854F61495F354904B0815DAD370F2DC3" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_8A92F2F487BB4B0D91AA97C6B1C4BB63" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_90EF8A4970FD4E1EA2E957CCD4BE3C12" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_941AB2FE861D473F8A3BF7700D1B4C9A" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_9A0F1D4637D442359BEE9904E866719D" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_9B48B60360EC42AF9A2173B092611B96" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_A67B6BA0A5084C5EBE82B0F12320BAC9" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_BA093C692CB54E6EB7C4345D24A37DCA" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_BB7B476E2E744F87AFBAB877A1406BF8" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_CC1AC06861F24051BF76D16EE414DD52" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_D50CDE71820A40819CFA870AFE0C617A" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_E557D62E3BB94EACA5444E7C55886949" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_F16FE64B836343158BDFEB1DCA35FC5B" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_FDB46E766CEA4972946840B920625E4F" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_854F61495F354904B0815DAD370F2DC3" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_470E181C544180A7CDE7B6647B002F81" - "MsmSig" = "8:_UNDEFINED" - } - } - "Configurations" - { - "Debug" - { - "DisplayName" = "8:Debug" - "IsDebugOnly" = "11:TRUE" - "IsReleaseOnly" = "11:FALSE" - "OutputFilename" = "8:Debug\\Setup.msi" - "PackageFilesAs" = "3:2" - "PackageFileSize" = "3:-2147483648" - "CabType" = "3:1" - "Compression" = "3:2" - "SignOutput" = "11:FALSE" - "CertificateFile" = "8:" - "PrivateKeyFile" = "8:" - "TimeStampServer" = "8:" - "InstallerBootstrapper" = "3:2" - "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" - { - "Enabled" = "11:TRUE" - "PromptEnabled" = "11:TRUE" - "PrerequisitesLocation" = "2:1" - "Url" = "8:" - "ComponentsUrl" = "8:" - "Items" - { - "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" - { - "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" - "ProductCode" = "8:.NETFramework,Version=v4.6.1" - } - } - } - } - "Release" - { - "DisplayName" = "8:Release" - "IsDebugOnly" = "11:FALSE" - "IsReleaseOnly" = "11:TRUE" - "OutputFilename" = "8:Release\\Setup.msi" - "PackageFilesAs" = "3:2" - "PackageFileSize" = "3:-2147483648" - "CabType" = "3:1" - "Compression" = "3:2" - "SignOutput" = "11:FALSE" - "CertificateFile" = "8:" - "PrivateKeyFile" = "8:" - "TimeStampServer" = "8:" - "InstallerBootstrapper" = "3:2" - "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" - { - "Enabled" = "11:TRUE" - "PromptEnabled" = "11:TRUE" - "PrerequisitesLocation" = "2:1" - "Url" = "8:" - "ComponentsUrl" = "8:" - "Items" - { - "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" - { - "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" - "ProductCode" = "8:.NETFramework,Version=v4.6.1" - } - } - } - } - } - "Deployable" - { - "CustomAction" - { - } - "DefaultFeature" - { - "Name" = "8:DefaultFeature" - "Title" = "8:" - "Description" = "8:" - } - "ExternalPersistence" - { - "LaunchCondition" - { - "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_3B853F72AAEE42369DBD9078B06661E5" - { - "Name" = "8:.NET Framework" - "Message" = "8:[VSDNETMSG]" - "FrameworkVersion" = "8:.NETFramework,Version=v4.6.1" - "AllowLaterVersions" = "11:FALSE" - "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728" - } - } - } - "File" - { - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_2EA50A303EBD49E3964D98A5C79C0254" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\LICENSE.txt" - "TargetName" = "8:LICENSE.txt" - "Tag" = "8:" - "Folder" = "8:_0C1D7FE64F924952B2561DC36B5BE683" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_32D01F06B3E84E2E9198BD417482E538" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\settings.ini" - "TargetName" = "8:settings.ini" - "Tag" = "8:" - "Folder" = "8:_0C1D7FE64F924952B2561DC36B5BE683" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3850A5AB68D040DC9016B6286C2B496A" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\parameters.ini" - "TargetName" = "8:parameters.ini" - "Tag" = "8:" - "Folder" = "8:_98C84A43FD2D4B2FA6D40FB3CD30A551" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_470E181C544180A7CDE7B6647B002F81" - { - "AssemblyRegister" = "3:1" - "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" - "ScatterAssemblies" - { - "_470E181C544180A7CDE7B6647B002F81" - { - "Name" = "8:System.Net.Http.dll" - "Attributes" = "3:514" - } - } - "SourcePath" = "8:System.Net.Http.dll" - "TargetName" = "8:" - "Tag" = "8:" - "Folder" = "8:_0C1D7FE64F924952B2561DC36B5BE683" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:TRUE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4E4DA446CA364566A820B8CFD6B0FEC3" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Algorithms\\pretrained_aod_net_numpy.npy" - "TargetName" = "8:pretrained_aod_net_numpy.npy" - "Tag" = "8:" - "Folder" = "8:_A6C6C8A2336F42A19EE5A340756D34FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_554A136BB7D54969AE10A729A3D25E4A" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Assets\\icon.ico" - "TargetName" = "8:icon.ico" - "Tag" = "8:" - "Folder" = "8:_78AF5A181B70499CB367390FBB95850F" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5A557F9E46E3428598E4E8EBDAF2DEBB" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\status.py" - "TargetName" = "8:status.py" - "Tag" = "8:" - "Folder" = "8:_98C84A43FD2D4B2FA6D40FB3CD30A551" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_66B283C62DFF4E5C93AC1063FD485870" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Logs\\status.log" - "TargetName" = "8:status.log" - "Tag" = "8:" - "Folder" = "8:_2081E57C81A04FFFAF9C8A8A83105E26" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_758541C5BA0244F49D2A4D1E0C0BBDB2" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\algorithms.ini" - "TargetName" = "8:algorithms.ini" - "Tag" = "8:" - "Folder" = "8:_98C84A43FD2D4B2FA6D40FB3CD30A551" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A0EABE22AB440A4B7FE7D850AA934B0" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Algorithms\\DXDetector.py" - "TargetName" = "8:DXDetector.py" - "Tag" = "8:" - "Folder" = "8:_A6C6C8A2336F42A19EE5A340756D34FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8A92F2F487BB4B0D91AA97C6B1C4BB63" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Setup\\checkPythonVersion.bat" - "TargetName" = "8:checkPythonVersion.bat" - "Tag" = "8:" - "Folder" = "8:_B146C5DD6BBB41A9BF8FC83E038DCD12" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_90EF8A4970FD4E1EA2E957CCD4BE3C12" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Assets\\heatmap_legend.jpg" - "TargetName" = "8:heatmap_legend.jpg" - "Tag" = "8:" - "Folder" = "8:_78AF5A181B70499CB367390FBB95850F" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_941AB2FE861D473F8A3BF7700D1B4C9A" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Algorithms\\__init__.py" - "TargetName" = "8:__init__.py" - "Tag" = "8:" - "Folder" = "8:_A6C6C8A2336F42A19EE5A340756D34FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9A0F1D4637D442359BEE9904E866719D" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\analyze.py" - "TargetName" = "8:analyze.py" - "Tag" = "8:" - "Folder" = "8:_98C84A43FD2D4B2FA6D40FB3CD30A551" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9B48B60360EC42AF9A2173B092611B96" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Logs\\codes.ini" - "TargetName" = "8:codes.ini" - "Tag" = "8:" - "Folder" = "8:_2081E57C81A04FFFAF9C8A8A83105E26" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A67B6BA0A5084C5EBE82B0F12320BAC9" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\timer.py" - "TargetName" = "8:timer.py" - "Tag" = "8:" - "Folder" = "8:_98C84A43FD2D4B2FA6D40FB3CD30A551" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BA093C692CB54E6EB7C4345D24A37DCA" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Algorithms\\AODNet.py" - "TargetName" = "8:AODNet.py" - "Tag" = "8:" - "Folder" = "8:_A6C6C8A2336F42A19EE5A340756D34FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BB7B476E2E744F87AFBAB877A1406BF8" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Setup\\installPythonPackages.bat" - "TargetName" = "8:installPythonPackages.bat" - "Tag" = "8:" - "Folder" = "8:_B146C5DD6BBB41A9BF8FC83E038DCD12" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CC1AC06861F24051BF76D16EE414DD52" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Setup\\checkPythonPackages.bat" - "TargetName" = "8:checkPythonPackages.bat" - "Tag" = "8:" - "Folder" = "8:_B146C5DD6BBB41A9BF8FC83E038DCD12" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D50CDE71820A40819CFA870AFE0C617A" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Algorithms\\timer.py" - "TargetName" = "8:timer.py" - "Tag" = "8:" - "Folder" = "8:_A6C6C8A2336F42A19EE5A340756D34FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E557D62E3BB94EACA5444E7C55886949" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Algorithms\\RXDetector.py" - "TargetName" = "8:RXDetector.py" - "Tag" = "8:" - "Folder" = "8:_A6C6C8A2336F42A19EE5A340756D34FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F16FE64B836343158BDFEB1DCA35FC5B" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\algorithms.py" - "TargetName" = "8:algorithms.py" - "Tag" = "8:" - "Folder" = "8:_98C84A43FD2D4B2FA6D40FB3CD30A551" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_FDB46E766CEA4972946840B920625E4F" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\lib\\Logs\\error.log" - "TargetName" = "8:error.log" - "Tag" = "8:" - "Folder" = "8:_2081E57C81A04FFFAF9C8A8A83105E26" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } - } - "FileType" - { - } - "Folder" - { - "{1525181F-901A-416C-8A58-119130FE478E}:_018022B6D4A048898C6AC639B1D71541" - { - "Name" = "8:#1918" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:PersonalFolder" - "Folders" - { - "{9EF0B969-E518-4E46-987F-47570745A589}:_BB0969C7ABE54813842FF6CE764C4085" - { - "Name" = "8:Computer Vision Emergency Response Toolkit" - "AlwaysCreate" = "11:TRUE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_D40E8CEECF5D4B73AB26973030A169C4" - "Folders" - { - "{9EF0B969-E518-4E46-987F-47570745A589}:_E9DC96B8E7614DB29FEDE9708A9E81AC" - { - "Name" = "8:Batches" - "AlwaysCreate" = "11:TRUE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_78927C3F69994E54A49B5A45A9D56050" - "Folders" - { - } - } - } - } - } - } - "{3C67513D-01DD-4637-8A68-80971EB9504F}:_0C1D7FE64F924952B2561DC36B5BE683" - { - "DefaultLocation" = "8:[AppDataFolder][ProductName]" - "Name" = "8:#1925" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:TARGETDIR" - "Folders" - { - "{9EF0B969-E518-4E46-987F-47570745A589}:_98C84A43FD2D4B2FA6D40FB3CD30A551" - { - "Name" = "8:lib" - "AlwaysCreate" = "11:TRUE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_5299CAAFD4A44649972F712DE735F529" - "Folders" - { - "{9EF0B969-E518-4E46-987F-47570745A589}:_2081E57C81A04FFFAF9C8A8A83105E26" - { - "Name" = "8:Logs" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_6E5AD765636E4B8CB72ABAB367E0A161" - "Folders" - { - } - } - "{9EF0B969-E518-4E46-987F-47570745A589}:_78AF5A181B70499CB367390FBB95850F" - { - "Name" = "8:Assets" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_C7882053024843639B43D697FF6A61FD" - "Folders" - { - } - } - "{9EF0B969-E518-4E46-987F-47570745A589}:_A6C6C8A2336F42A19EE5A340756D34FF" - { - "Name" = "8:Algorithms" - "AlwaysCreate" = "11:TRUE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_54670A6C3C7F49D2974FCF0BCEFE03FD" - "Folders" - { - } - } - "{9EF0B969-E518-4E46-987F-47570745A589}:_B146C5DD6BBB41A9BF8FC83E038DCD12" - { - "Name" = "8:Setup" - "AlwaysCreate" = "11:TRUE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_7077201353A64C01AC2FE545E3AAC4A1" - "Folders" - { - } - } - } - } - } - } - "{1525181F-901A-416C-8A58-119130FE478E}:_357BC292747B4ABDA88EB76AE403FF68" - { - "Name" = "8:#1916" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:DesktopFolder" - "Folders" - { - } - } - "{1525181F-901A-416C-8A58-119130FE478E}:_41B84DE73D86437180327BDEE059B29C" - { - "Name" = "8:#1919" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:ProgramMenuFolder" - "Folders" - { - "{9EF0B969-E518-4E46-987F-47570745A589}:_7EF392A9F7854E3F9908D5DCEEB8E5F1" - { - "Name" = "8:Computer Vision Emergency Response Toolkit" - "AlwaysCreate" = "11:FALSE" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Property" = "8:_F65803C8AF7E4EE4BEAC4865C397D53D" - "Folders" - { - } - } - } - } - } - "LaunchCondition" - { - } - "Locator" - { - } - "MsiBootstrapper" - { - "LangId" = "3:1033" - "RequiresElevation" = "11:FALSE" - } - "Product" - { - "Name" = "8:Microsoft Visual Studio" - "ProductName" = "8:Computer Vision Emergency Response Toolkit" - "ProductCode" = "8:{EDC0C82D-AD07-47C5-B6F0-32717DEB810C}" - "PackageCode" = "8:{F860383B-BBE3-4486-B8AF-C188457B7D2F}" - "UpgradeCode" = "8:{C6CD987E-EA19-4AF9-B0AB-CFAABFAD1B5A}" - "AspNetVersion" = "8:2.0.50727.0" - "RestartWWWService" = "11:FALSE" - "RemovePreviousVersions" = "11:TRUE" - "DetectNewerInstalledVersion" = "11:TRUE" - "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.0.0" - "Manufacturer" = "8:Computer Vision Emergency Response Toolkit" - "ARPHELPTELEPHONE" = "8:" - "ARPHELPLINK" = "8:" - "Title" = "8:Toolkit Setup" - "Subject" = "8:" - "ARPCONTACT" = "8:Computer Vision Emergency Response Toolkit" - "Keywords" = "8:" - "ARPCOMMENTS" = "8:" - "ARPURLINFOABOUT" = "8:" - "ARPPRODUCTICON" = "8:_554A136BB7D54969AE10A729A3D25E4A" - "ARPIconIndex" = "3:0" - "SearchPath" = "8:" - "UseSystemSearchPath" = "11:TRUE" - "TargetPlatform" = "3:1" - "PreBuildEvent" = "8:" - "PostBuildEvent" = "8:" - "RunPostBuildEvent" = "3:0" - } - "Registry" - { - "HKLM" - { - "Keys" - { - "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_035620763D4442FEBD17F2A3EE7C49EF" - { - "Name" = "8:Software" - "Condition" = "8:" - "AlwaysCreate" = "11:FALSE" - "DeleteAtUninstall" = "11:FALSE" - "Transitive" = "11:FALSE" - "Keys" - { - "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7B4CA7081823443F8CF0A7D1FB60476C" - { - "Name" = "8:[Manufacturer]" - "Condition" = "8:" - "AlwaysCreate" = "11:FALSE" - "DeleteAtUninstall" = "11:FALSE" - "Transitive" = "11:FALSE" - "Keys" - { - } - "Values" - { - } - } - } - "Values" - { - } - } - } - } - "HKCU" - { - "Keys" - { - "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_3B1C602BD8F846F7BA100ABB14C913D2" - { - "Name" = "8:Software" - "Condition" = "8:" - "AlwaysCreate" = "11:FALSE" - "DeleteAtUninstall" = "11:FALSE" - "Transitive" = "11:FALSE" - "Keys" - { - "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1304FC64D2C54F66B41A3063946B12B4" - { - "Name" = "8:[Manufacturer]" - "Condition" = "8:" - "AlwaysCreate" = "11:FALSE" - "DeleteAtUninstall" = "11:FALSE" - "Transitive" = "11:FALSE" - "Keys" - { - } - "Values" - { - } - } - } - "Values" - { - } - } - } - } - "HKCR" - { - "Keys" - { - } - } - "HKU" - { - "Keys" - { - } - } - "HKPU" - { - "Keys" - { - } - } - } - "Sequences" - { - } - "Shortcut" - { - "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_73C94585FCC2441C9CEED96183EC3748" - { - "Name" = "8:CVER Toolkit" - "Arguments" = "8:" - "Description" = "8:" - "ShowCmd" = "3:1" - "IconIndex" = "3:0" - "Transitive" = "11:FALSE" - "Target" = "8:_854F61495F354904B0815DAD370F2DC3" - "Folder" = "8:_7EF392A9F7854E3F9908D5DCEEB8E5F1" - "WorkingFolder" = "8:_0C1D7FE64F924952B2561DC36B5BE683" - "Icon" = "8:_554A136BB7D54969AE10A729A3D25E4A" - "Feature" = "8:" - } - "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_E21CDB252C9B46F7BA1CBBCD5B10E3AC" - { - "Name" = "8:Batches" - "Arguments" = "8:" - "Description" = "8:" - "ShowCmd" = "3:1" - "IconIndex" = "3:0" - "Transitive" = "11:FALSE" - "Target" = "8:_E9DC96B8E7614DB29FEDE9708A9E81AC" - "Folder" = "8:_357BC292747B4ABDA88EB76AE403FF68" - "WorkingFolder" = "8:_BB0969C7ABE54813842FF6CE764C4085" - "Icon" = "8:" - "Feature" = "8:" - } - "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_EB6E98BF505A47AA9EF43025B26AC9EC" - { - "Name" = "8:CVER Toolkit" - "Arguments" = "8:" - "Description" = "8:" - "ShowCmd" = "3:1" - "IconIndex" = "3:0" - "Transitive" = "11:FALSE" - "Target" = "8:_854F61495F354904B0815DAD370F2DC3" - "Folder" = "8:_357BC292747B4ABDA88EB76AE403FF68" - "WorkingFolder" = "8:_0C1D7FE64F924952B2561DC36B5BE683" - "Icon" = "8:_554A136BB7D54969AE10A729A3D25E4A" - "Feature" = "8:" - } - } - "UserInterface" - { - "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_15FE6C0384BE4D338FDDDF86AE2D0092" - { - "Name" = "8:#1902" - "Sequence" = "3:2" - "Attributes" = "3:3" - "Dialogs" - { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1367B096D797420D9AD9DFF7621FB604" - { - "Sequence" = "3:100" - "DisplayName" = "8:Finished" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - } - } - "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_296EFAA565734487B1599731DCA1D0F2" - { - "UseDynamicProperties" = "11:FALSE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdUserInterface.wim" - } - "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_328D72D71BB241D79D8526D55F2A651F" - { - "Name" = "8:#1902" - "Sequence" = "3:1" - "Attributes" = "3:3" - "Dialogs" - { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_1A83DABD43D0436B9998BC32EDB551D2" - { - "Sequence" = "3:100" - "DisplayName" = "8:Finished" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdFinishedDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "UpdateText" - { - "Name" = "8:UpdateText" - "DisplayName" = "8:#1058" - "Description" = "8:#1158" - "Type" = "3:15" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1258" - "DefaultValue" = "8:#1258" - "UsePlugInResources" = "11:TRUE" - } - } - } - } - } - "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_8553B3D3071C49C1A244A5DF1D603F6F" - { - "UseDynamicProperties" = "11:FALSE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdBasicDialogs.wim" - } - "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_88717F7E9965436AA1544913E4CE47A5" - { - "Name" = "8:#1901" - "Sequence" = "3:1" - "Attributes" = "3:2" - "Dialogs" - { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CBF23A0F949E46B5B3ED17956432356D" - { - "Sequence" = "3:100" - "DisplayName" = "8:Progress" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdProgressDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "ShowProgress" - { - "Name" = "8:ShowProgress" - "DisplayName" = "8:#1009" - "Description" = "8:#1109" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:1" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - } - } - "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8E100F4D856E4C01AB8E3C47569FB647" - { - "Name" = "8:#1900" - "Sequence" = "3:1" - "Attributes" = "3:1" - "Dialogs" - { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_08643A0215374752B3A982AA0D61B3F0" - { - "Sequence" = "3:400" - "DisplayName" = "8:Confirm Installation" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdConfirmDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_26B61B887CA0457B8FC7156314A31E05" - { - "Sequence" = "3:300" - "DisplayName" = "8:Installation Folder" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdFolderDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "InstallAllUsersVisible" - { - "Name" = "8:InstallAllUsersVisible" - "DisplayName" = "8:#1059" - "Description" = "8:#1159" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:1" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9D309E8D30BB464B819DCF11DF97505A" - { - "Sequence" = "3:100" - "DisplayName" = "8:Welcome" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdWelcomeDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "CopyrightWarning" - { - "Name" = "8:CopyrightWarning" - "DisplayName" = "8:#1002" - "Description" = "8:#1102" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:" - "DefaultValue" = "8:#1202" - "UsePlugInResources" = "11:TRUE" - } - "Welcome" - { - "Name" = "8:Welcome" - "DisplayName" = "8:#1003" - "Description" = "8:#1103" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1203" - "DefaultValue" = "8:#1203" - "UsePlugInResources" = "11:TRUE" - } - } - } - } - } - "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_91E0BF50AE9948E1935011B996EC0BA3" - { - "Name" = "8:#1901" - "Sequence" = "3:2" - "Attributes" = "3:2" - "Dialogs" - { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2E3E1ED1997A4791BAC637CC756A813D" - { - "Sequence" = "3:100" - "DisplayName" = "8:Progress" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminProgressDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "ShowProgress" - { - "Name" = "8:ShowProgress" - "DisplayName" = "8:#1009" - "Description" = "8:#1109" - "Type" = "3:5" - "ContextData" = "8:1;True=1;False=0" - "Attributes" = "3:0" - "Setting" = "3:0" - "Value" = "3:1" - "DefaultValue" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - } - } - "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_FF7B866B8C4E43D2869A9CA3389EBB59" - { - "Name" = "8:#1900" - "Sequence" = "3:2" - "Attributes" = "3:1" - "Dialogs" - { - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_6614C0B3452348B583205E4FDF21B0F6" - { - "Sequence" = "3:100" - "DisplayName" = "8:Welcome" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - "CopyrightWarning" - { - "Name" = "8:CopyrightWarning" - "DisplayName" = "8:#1002" - "Description" = "8:#1102" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:2" - "Value" = "8:" - "DefaultValue" = "8:#1202" - "UsePlugInResources" = "11:TRUE" - } - "Welcome" - { - "Name" = "8:Welcome" - "DisplayName" = "8:#1003" - "Description" = "8:#1103" - "Type" = "3:3" - "ContextData" = "8:" - "Attributes" = "3:0" - "Setting" = "3:1" - "Value" = "8:#1203" - "DefaultValue" = "8:#1203" - "UsePlugInResources" = "11:TRUE" - } - } - } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_756CA2A51B994E74A21EE2DA55B649EC" - { - "Sequence" = "3:200" - "DisplayName" = "8:Installation Folder" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminFolderDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F33173C393EB4A919B99F0854E727144" - { - "Sequence" = "3:300" - "DisplayName" = "8:Confirm Installation" - "UseDynamicProperties" = "11:TRUE" - "IsDependency" = "11:FALSE" - "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" - "Properties" - { - "BannerBitmap" - { - "Name" = "8:BannerBitmap" - "DisplayName" = "8:#1001" - "Description" = "8:#1101" - "Type" = "3:8" - "ContextData" = "8:Bitmap" - "Attributes" = "3:4" - "Setting" = "3:1" - "UsePlugInResources" = "11:TRUE" - } - } - } - } - } - } - "MergeModule" - { - } - "ProjectOutput" - { - "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_854F61495F354904B0815DAD370F2DC3" - { - "SourcePath" = "8:..\\Computer Vision Toolkit\\obj\\Release\\CVER Toolkit.exe" - "TargetName" = "8:" - "Tag" = "8:" - "Folder" = "8:_0C1D7FE64F924952B2561DC36B5BE683" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - "ProjectOutputGroupRegister" = "3:1" - "OutputConfiguration" = "8:Release|Any CPU" - "OutputGroupCanonicalName" = "8:Built" - "OutputProjectGuid" = "8:{58D1E99E-3294-47A4-BE32-ECDBECDEA4BC}" - "ShowKeyOutput" = "11:TRUE" - "ExcludeFilters" - { - } - } - } - } -} diff --git a/Documentation/Source Files/User Manual.docx b/Documentation/Source Files/User Manual.docx deleted file mode 100644 index d6bf20f..0000000 Binary files a/Documentation/Source Files/User Manual.docx and /dev/null differ diff --git a/Documentation/Source Files/User Manual.pages b/Documentation/Source Files/User Manual.pages deleted file mode 100644 index 8ad4e05..0000000 Binary files a/Documentation/Source Files/User Manual.pages and /dev/null differ diff --git a/Documentation/Source Files/User Manual.pdf b/Documentation/Source Files/User Manual.pdf deleted file mode 100644 index 569bf65..0000000 Binary files a/Documentation/Source Files/User Manual.pdf and /dev/null differ diff --git a/Documentation/User Manual.pdf b/Documentation/User Manual.pdf deleted file mode 100644 index 569bf65..0000000 Binary files a/Documentation/User Manual.pdf and /dev/null differ diff --git a/Documentation/developers guide/developers_guide.pdf b/Documentation/developers guide/developers_guide.pdf new file mode 100644 index 0000000..4b03e8a Binary files /dev/null and b/Documentation/developers guide/developers_guide.pdf differ diff --git a/Documentation/developers guide/developers_guide.tex b/Documentation/developers guide/developers_guide.tex new file mode 100644 index 0000000..f0863a9 --- /dev/null +++ b/Documentation/developers guide/developers_guide.tex @@ -0,0 +1,298 @@ +\documentclass[12pt,a4paper]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{geometry} +\geometry{textwidth=6in} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{caption} +\usepackage{subcaption} +\usepackage{graphicx} +\usepackage{array} +\usepackage{listings} +% \graphicspath{ {./images/} } +\usepackage{float} +% \usepackage{floatrow} +\usepackage{cancel} +\author{Paul Faugeras} +\date{Developers' guide} +\title{Computer Vision Emergency Response Toolkit} +\renewcommand{\partname} + +\begin{document} + +\pagebreak + +\begin{LARGE} + \maketitle +\end{LARGE} + +\pagebreak + +\tableofcontents + +\pagebreak + +\part{Introduction} +\setcounter{section}{0} + +\section{Idea} + +The main idea of this software is to provide a good-looking user-friendly, yet quite powerful app that doesn't need any installed framework on the user's machine.\\ +~\\ +I wanted something that was responsive, good-looking, could work on ALL Operating Systems, and that the user could install and launch in a simple double-click.\\ +~\\ +Because some algorithms were already written in Python, I decided to keep that technology as a back-end, but chose a more web-looking framework for the front-end : Angular. That is because I find that there isn't much better-looking and diverse user interfaces than on the web, and I already know how to code in Typescript (and I know nothing of C\#)... + +\section{Architecture} +The architecture is quite simple :\\ +~\\ +On startup, the Angular app launches a Python server as a subprocess on port 5000, and sends it HTTP requests with all the infos needed every time it needs to use one of its algorithms. It then waits for the response from the server to update its UI. + +\pagebreak + +\part{Back-end} +\setcounter{section}{0} + +\section{Python server} +The Back-end is handled by a Python 3.6 server ran on Flask on port 5000.\\ +~\\ +The entry file is server.py, that launches the server. That server handles the incoming HTTP POST requests. All other requests are rejected. The POST request should contain a JSON data containing a 'targetPath' field.\\ +~\\ +If that field's value is 'response', then the sourcePath should be a base64 image, and the server should apply the algorithmto that base64 image data, and send a base64 image as an answer. This is typically the case for computer vision algorithms, as they need to be displayed as a URI on the tag of the Angular front-end app (see below). For that, we call the 'handleFilter' method of the 'handlePost' module (see below).\\ +~\\ +If the 'targetPath' field, on the other hand, is not 'response', then we will be looking at a GPS fetch request, with GIS data in the JSON. It will not request base64 image data as a response, but asks for saving the processed files in the destination folder. In this case, we will use the 'handleGPSfetch' method of the 'handlePost' module (see below). + +\section{HandlePost} +The HandlePost module has four functions.\\ +~\\ +First, 'handleFilter' will take as arguments the algorithm (in JSON shape, see assets.json), the sourcePath (as base64 string image), and the parameters (as JSON, from Angular Server parameters). It will dynamically import the right library from the algorithm JSON, then convert the base64 image into a cv2 image object using 'data\_uri\_to\_cv2\_img', apply the corresponding algorithm to it, with the input parameters, reconvert the resulting image into a base64 string, and return the results as JSON, to be sent back by the server.\\ +~\\ +The second function, 'handleGPSfetch' will apply the GPSfetch algorithm to the sourcePath field of the JSON request (which is actually a list of paths to input files). Once the algorithm finishes, it sends back a dummy JSON just to warn that it has finished. + +\section{Algorithms} + +\subsection{Image processing} + +Those are the algorithms (same as in the original project) that take as argument a cv2 image, and the server parameters, apply the image processing algorithm, then returns the result image, the process time and the success percentage, if relevant (0 otherwise).\\ +~\\ +Currently, there are three such algorithms : RXDetector, DXDetector and Dehaze (AODnet). + +\subsection{GPS fetch} +This is a new function that I developed myself.\\ +It takes as arguments a sourcePath (a list of image paths), a target path (a destination directory), and a gpsTarget JSON item (lat, lon, and FOV) for the target GPS point.\\ +~\\ +Then, using XMP-exif data extraction in the source files, then vectorial computation, it finds all the images of which the field of view intersects with the GPS target point. If such a point is found, it draws a red circle at its location on the image, and saves the image in the destination folder.\\ +~\\ +If no intersection is found, or if the XMP-exif data cannot be extracted from the image, it is simply ignored. + +\section{Developing} +\subsection{Install and manual run} +First, you need to install Python 3.6 or higher on your computer.\\ +~\\ +\texttt{pip3} is normally installed with Python3 (otherwise, you can install it manually). After that, all you need to do is install the required libraries by running the following command, in the python-server directory :\\ +~\\ +\texttt{pip3 install -r requirements.txt}\\ +~\\ +Once that is done, you can launch the server simply by running the following command (in the same directory) :\\ +~\\ +\texttt{python3 server.py} (for Linux, which has both Python2 and Python3),\\ +\texttt{python server.py} (for Windows, with only python3 installed) + +\subsection{Adding an new algorithm} +First, create a python file in the Algorithms directory.\\ +~\\ +In that file, you are free to put all the functions you like. Your main function, however (the one that \texttt{handlePost} will execute), needs to take as argument: (1) a cv2 image, (2) a parameters JSON. It can access the parameters using the notation \texttt{parameters['key']}, with 'key' being the name of the parameter. Then, after processing the image, it must return : (1) the cv2 resulting image, (2) the time elapsed (you can use the timer functions, see below for usage), (3) the accuracy percentage (0 if not relevant).\\ +~\\ +For example, in \texttt{Algorithms/newAlgorithm.py} : +\begin{lstlisting}[language=Python] +import timer +import package1 +... + +def myAlgorithm(cv2_image, parameters): + t = timer.Timer() + t.start() + myParameter = parameters['myParameterKey'] + ... + result_image = do_something_with(cv2_image, myParameter) + percentage = compare_images(cv2_image, result_image) + ... + t.stop() + return(result_image, t.get-time(), percentage) +\end{lstlisting} +~\\ +If you need a specfic package for your algorithm (above, for example, \texttt{package1}), add a line in \texttt{requirements.txt} with its name, so that the next user to download the git repo will know what to install.\\ +~\\ +Now, we need to update \texttt{CVERT-ng/src/app/assets/assets.json} in the \texttt{serverFilters} list : you need to add (1) the name that will be displayed on the front end, (2) the name of the library/module, (3) the name of the main Python function within the module, (4) the arguments (here, leave it as the others). For the above example (please note the file name), you will add the following element :\\ + +\begin{lstlisting} +{ + "name": "My Awesome Algorithm", + "libName": "newAlgorithm", + "pyFunction": "myAlgorithm", + "args": [{"type": "button"}] +}, +\end{lstlisting} + +~\\ +Then, in \texttt{CVERT-ng/src/app/assets/algorithmParameters.json}, if you need a custom parameter (in the above, \texttt{myParameterKey}, that we'd like to set at default value 8, for example), we should add it to the \texttt{algorithmParameters} array for the Angular app to prompt the user when he tunes the server parameters. For that, we need to set (1) the parameter name, (2) its default value. Leave the other fields as they are, they are used by the front end :\\ + +\begin{lstlisting} +{ + "name": "myParameterKey", + "useDefault": true, + "defaultValue": 8, + "userValue": 8 +}, +\end{lstlisting} + +~\\ +Finally, in order for the compiler (PyInstaller) to find your algorithm, and include its assets if your algorithm needs a specific file during its runtime (for example, the AODnet algorithm needs the pretrained network (.npy) file located in the \texttt{Algorithm} directory, we will need to add the algorithm and the asset in the \texttt{server.spec} file, like so :\\ + +\begin{lstlisting}[language=Python] +imports = [ + "Algorithms.DXDetector", + "Algorithms.RXDetector", + "Algorithms.AODNet", + "Algorithms.newAlgorithm" +] + +extraFiles = [ + "pretrained_aod_net_numpy.npy", + "your_resource_file.whatever" +] +\end{lstlisting} +~\\ +(Make sure that your resource file is in the \texttt{Algorithms} directory : that's where the spec file will look for it...)\\ + +Now you should see your algorithm and settings appear in the software after compiling, yipee! :) + +\pagebreak + +\part{Front-end} +\setcounter{section}{0} + +The front-end is handled by an Angular App, encapsulated in an Electron instance, communicating with the server via HTTP. + +\section{Angular} + +Angular is a Typescript framework, made for designing good-looking, yet efficient user interfaces. It uses components and services to interact between objects, and uses Node Package Manager to import and manage external free-to-use libraries. + +\subsection{Libraries} + +As for any npm projects, all the used libraries can be found in \texttt{package.json}. You can find the main ones below. + +\subsubsection{deployed} + +In the deployed app, we use two UI libraries : Bootstrap (for nice-looking HTML elements, without messing too much with CSS), and Angular-Material (for theming and useful widgets).\\ +~\\ +For the histograms, we use Chart.js, which builds amazing-looking charts in no time, and for the GIS grid and markers, Three.js, which gives you great optimized browser tools for 3D-rendering on HTML canvases. We also use usng.js for converting GPS coordinates into USNG.\\ +~\\ +In order to extract XMP-exif, we use exifr and fast-xml-parser. We've tried multiple extraction tools, but found out that only the combination of those two gave us the desired results.\\ +~\\ +Finally, all of the front-end filters are handled with the (amazing) library : Jimp! + +\subsubsection{development} +Since we are developing on Typescript using Electron, we need both the Typescript and the Electron dependencies.\\ +~\\ +As we would like to compile the app into a single executable file, we also use the Electron-builder package, which we felt like it was the best suited for our needs, in terms of ease of use, and effectiveness (more on that below). + +\subsection{Components} + +For each of the UI tabs, we created a single component. Then, in the App component, we added a router outlet, so to be able to navigate to an other page for the settings page for the server (that's a little bit tricky, but needed when using Electron.).\\ +~\\ +only the images and the histograms use the same component for both the top and the bottom one, since they have the same behaviour. You just need to bind the right object to each of them in the main app component. + +\subsection{Services} + +There are four services, which are all provided in the root app component (for singleton generation). + +\begin{itemize} + \item \textbf{Canvas :} this is the one used to display the grid on the bottom image. It has all the \texttt{Three.js} logic (generation, update, display) and mainly interacts with the GIS data, for visualisation on the overlayed canvas. + \item \textbf{file :} This is the one that interacts with the Electron IPC (see below), to create a bridge with the file system (which you cannot access within Angular). It is mainly used when opening and saving files, selecting the input files and the output directory. It is also used when opening a new Electron window, for setting the server filter parameters, for example. + \item \textbf{GIS :} This is the service that updates the marker position (GPS and USNG) when the user clicks on a location of the image. + \item \textbf{Server :} The main service to communicate with the sever through HTTP. It handles the requests, the response, and plays with the Promises and observables. +\end{itemize} + +\section{Electron and IPC} + +Electron is a framework that enables you to embed your web apps into a desktop app. Here, the main entry to the app is the \texttt{main.ts} file, which is located in the Electron directory. This one creates a window, then loads the Angular main file (in the dist folder once converted into JS), and adds listeners (IPC for Inter-Process Communication) to interact with the file system (read, write files, extract XMP-Exif etc.), to open new windows etc.\\ +~\\ +In the next section, you will also see that it is the piece of code that launches the Python server on startup (because it is the entry point of the app). + +\section{Front/Back communication} + +The Angular app, through the sevrer service and HTTP requests, communicates with the Python back-end on port 5000.\\ +The address subsequently, is \texttt{http://127.0.0.1:5000}.\\ +~\\ +When the app launches (through Electron), the main.ts file first checks if the app is in its compiled form (with Electron-builder, see below), or still in development mode (through npm).\\ +~\\ +If in compiled form, it will look for the executable server file in the resources folder (decompressed in the temporary memory at runtime), and launches it as a child process with \texttt{child\_process.execFile()}.\\ +~\\ +If it is development mode, it will, on the contrary, look for the python file : \texttt{server.py}, and execute it through a child process command line : \texttt{python3 server.py}. In this case, you will have to have installed Python 3.6 and the required libraries (in \texttt{requirements.txt}) needed to run the server and its image processing algorithms.\\ +~\\ +If you want to run your own server, but don't want to put Electron in development mode (use the single executable), you can modify the \texttt{server.py} file to serve on an other port (for example, 6000), and set the server port on the front-end to that port.\\ +~\\ +In this case, you will have 2 servers running (one, through child\_process, on port 5000, and one that you launched manually on port 6000), but only your own server will be used. (You are basically redirecting the HTTP requests to your own server). + +\section{Developing} + +First, you need to install nodejs and npm (node Package Manager). Usually, if you install nodejs, npm is installed automatically.\\ +~\\ +Then, you will need to install the Angular-cli globally :\\ +\texttt{npm install -g @angular/cli}\\ +~\\ +After you have cloned the git repo, navigate to \texttt{CVERT-ng} directory, and install all of the necessary libraries :\\ +~\\ +\texttt{npm install}\\ +~\\ +Then, you will normally be able to run the app with Electron through the following command (ran in the CVERT-ng directory) :\\ +~\\ +\texttt{npm run electron} + +\pagebreak + +\part{Compilation} +\setcounter{section}{0} + +In order to compile your app into an executable file for your operating system, you will need to compile both the back-end, THEN the front-end with the following instructions. + +\section{PyInstaller} + +Once you have installed Python 3.6 and the required libraries (see above), once you have tested the server manually and it runs smoothly, if you have added an algorithm and followed the instructions in the corresponding section above, you are ready to compile the python server into an executable file !\\ +~\\ +Navigate to the \texttt{python-server} directory, and run the following command :\\ +~\\ +\texttt{pyinstaller server.spec}\\ +~\\ +That should create two directories : \texttt{build} and \texttt{dist}. Your executable file will be in \texttt{dist}. You can try it out by double-clicking on it, but be careful : since it doesn't have any window, you will not be able to close it (you might have to stop it through the task manager...). You can also launch it through a terminal : you will be able to get the Python output and debug your executable file.\\ +~\\ +Do not move the resulting file : it needs to stayy in the dist folder in order for Electron-builder to find it and include it in the final app.\\ +~\\ +\textit{NOTE : If, when compiling with pyinstaller, you get an error like} \texttt{AttributeError: module 'enum' has no attribute 'IntFlag'}, \textit{then uninstall the package} \texttt{enum34}\textit{, that causes the error :} \texttt{pip3 uninstall -y enum34}. + +\section{Electron-Builder} + +Once the server executable has been generated for your OS, you will need to compile the Electron Angular app with Electron-builder. To do so, make sure you have installed all the dependencies, and that your app runs smoothly when launched manually with npm.\\ +~\\ +In \texttt{package.json}, you will see that there is a dictionnary called "build" : that is the one that Electron-builder will use as a reference for all the compilation settings. In there, you will see that the Python dist folder is used as an extraResource, and that we will ask for it to provide files for Linux, Windows and Mac, depending on the machine the command is executed on.\\ +~\\ +Before compiling your code, you will need to run one final time \texttt{npm run electron}, otherwise the last version of the files might not be taken ito account...\\ +~\\ +Then, you can run the following command (in the CVERT-ng directory) :\\ +~\\ +\texttt{./node\_modules/.bin/electron-builder} (for Linux),\\ +\texttt{.\textbackslash node\_modules\textbackslash .bin\textbackslash electron-builder} (for Windows).\\ +~\\ +Your executable file will be located in the \texttt{releases} directory. You can test it by simply double-clicking on it. + +\section{Build scripts} + +We are working on platform-specific build scripts that will enable you to compile the python server, then the Angular app in a single command.\\ +~\\ +More on that later. + + +\end{document} diff --git a/Documentation/users manual/images/action_tab.png b/Documentation/users manual/images/action_tab.png new file mode 100644 index 0000000..1bd3e62 Binary files /dev/null and b/Documentation/users manual/images/action_tab.png differ diff --git a/Documentation/users manual/images/advanced_settings.png b/Documentation/users manual/images/advanced_settings.png new file mode 100644 index 0000000..3bd4ea3 Binary files /dev/null and b/Documentation/users manual/images/advanced_settings.png differ diff --git a/Documentation/users manual/images/filters_list.png b/Documentation/users manual/images/filters_list.png new file mode 100644 index 0000000..728810f Binary files /dev/null and b/Documentation/users manual/images/filters_list.png differ diff --git a/Documentation/users manual/images/gis.png b/Documentation/users manual/images/gis.png new file mode 100644 index 0000000..b6e6e99 Binary files /dev/null and b/Documentation/users manual/images/gis.png differ diff --git a/Documentation/users manual/images/grid.png b/Documentation/users manual/images/grid.png new file mode 100644 index 0000000..a869d79 Binary files /dev/null and b/Documentation/users manual/images/grid.png differ diff --git a/Documentation/users manual/images/simple_filter_edit.png b/Documentation/users manual/images/simple_filter_edit.png new file mode 100644 index 0000000..ce87aa8 Binary files /dev/null and b/Documentation/users manual/images/simple_filter_edit.png differ diff --git a/Documentation/users manual/images/user_interface.png b/Documentation/users manual/images/user_interface.png new file mode 100644 index 0000000..e45bf7c Binary files /dev/null and b/Documentation/users manual/images/user_interface.png differ diff --git a/Documentation/users manual/users_manual.pdf b/Documentation/users manual/users_manual.pdf new file mode 100644 index 0000000..17554f5 Binary files /dev/null and b/Documentation/users manual/users_manual.pdf differ diff --git a/Documentation/users manual/users_manual.tex b/Documentation/users manual/users_manual.tex new file mode 100644 index 0000000..dfd5e7f --- /dev/null +++ b/Documentation/users manual/users_manual.tex @@ -0,0 +1,266 @@ +\documentclass[12pt,a4paper]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{geometry} +\geometry{textwidth=6in} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{caption} +\usepackage{subcaption} +\usepackage{graphicx} +\usepackage{array} +\graphicspath{ {./images/} } +\usepackage{float} +% \usepackage{floatrow} +\usepackage{cancel} +\author{Paul Faugeras} +\date{Users' manual} +\title{Computer Vision Emergency Response Toolkit} +\renewcommand{\partname} + +\begin{document} + +\pagebreak + +\begin{LARGE} + \maketitle +\end{LARGE} + +\pagebreak + +\tableofcontents + +\pagebreak + +\part{Installation} + +https://electronjs.org/docs/tutorial/support\#supported-platforms + +\section{Windows} +\textbf{Requirements}\\ +- Windows 7 or later,\\ +- 500 Mb of free disk space.\\ +~\\ +The software has been tested (and ran smoothly) on 64-bit Windows 10 with 8Gb RAM, Intel Core i5 with potato GPU.\\ +~\\ +\textbf{Installation}\\ +On the github page, use the links to download the \textbf{.exe} Windows installer. (please check your Windows distribution : you need the ia32 installer for x86 Windows, and x64 installer for amd64 Windows).\\ +~\\ +Double-click the installer, and follow the instructions. + +\section{MacOS} +\textbf{Currently not supported, but will come later !}\\ +~\\ +\textbf{Requirements}\\ +- macOS 10.10 (Yosemite) or later,\\ +- TBD of free disk space.\\ +~\\ +\textbf{Installation}\\ +On the github page, use the links to download the \textbf{.dmg} MacOS installer.\\ +~\\ +Double-click the installer, and follow the instructions. + + +\section{Linux} +\textbf{Requirements}\\ +- Ubuntu 12.04 or above, Fedora 21, Debian 8,\\ +- 500 Mb of free disk space.\\ +~\\ +The software has been tested (and ran smoothly) on 64-bit Ubuntu 18.04 with 8Gb RAM, Intel Core i5 with potato GPU.\\ +~\\ +\textbf{Installation}\\ +On the github page, use the links to download the Linux files.\\ +~\\ +You're on Linux (I like you), you know what to do...\\ +~\\ +\textit{Please note that both installers and standalone apps are available for Linux.} + +\pagebreak + +\part{User Interface} +\setcounter{section}{0} + +\begin{figure}[H] + \includegraphics[scale=0.25]{user_interface} + \centering +\end{figure} + +\begin{itemize} + \item \textbf{Top-left :} Current filters list, + \item \textbf{Middle-left :} Selected filter edit, + \item \textbf{Lower-left :} Back-end server settings (for developers only) + \item \textbf{Top-center :} Currently opened image, + \item \textbf{Lower-center :} Edited image (+ GIS grid and markers), + \item \textbf{Top-right :} GIS settings and marker position, + \item \textbf{Middle-right :} Top and bottom image histograms, + \item \textbf{Lower-right :} Action buttons. +\end{itemize} + +\part{Basic actions} +\setcounter{section}{0} + +Basic actions are the first actions that you will use when running the software. For that, you will have to use the different buttons on the Action tab (lower right). + +\begin{figure}[H] + \includegraphics[scale=0.6]{action_tab} + \centering +\end{figure} + +\section{Opening and saving images} + +To open an image, click on the button 'Open', and navigate to the desired file. Supported file types include JPEG, PNG, BMP, TIFF and GIF.\\ +~\\ +Once the image is opened, both the top and bottom image on the center panel should appear, with a grid overlay on the bottom image. The histograms should also appear.\\ +~\\ +After opening an image, the 'save' button should be clickable. After clicking on it, you will be prompted to choose a destination folder and file name to save the image. Please keep in mind for later that this action will save \textbf{the bottom picture}. You will see below that this will be the filtered image. + +\section{Setting GIS data} + +After opening an image, if the software finds DJI's metadata (exif-XMP) in the file, the GIS tab (top-right tab) will have updated all the informations that it found. Those include : the position the picture was taken at (latitude, longitude, altitude) as well as the camera orientation (gimbal pitch and heading). You can switch between meters and feet for the altitude.\\ +~\\ +Please kindly note that \textbf{you will have to manually set the diagonal Field Of View of the camera} (FOV), since DJI doesn't store that piece of information in the metadata.\\ +~\\ +If the software doesn't find any metadata in the image, default data will be used, but you can tune them manually.\\ +~\\ +Please kindly note that DJI's metadata are not extremely precise : you might have to tweak the settings manually until the grid overlay on the bottom image fits the displayed image. + +\section{GIS Marker} + +Once you are happy with the grid overlay fit on the bottom image, you can hover your mouse over the bottom image. You will notice a colored cone moving around on the grid plane : that is your current mouse position relative to the ground. + +\begin{figure}[H] + \includegraphics[scale=0.4]{grid} + \centering +\end{figure} + +After clicking on a spot on the image, you will see appear a red cone : that is your current marker position. On the GIS tab, you will see new fields appear : that will be your current marker's position : latitude, longitude and corresponding USNG coordinates. + +\begin{figure}[H] + \includegraphics[scale=0.6]{gis} + \centering +\end{figure} + +You can update the current marker's position by clicking on an other spot on the image. The GIS tab will update accordingly. Please note that this marker will be the position selected when applying bulk GIS fetch (see below). + +\pagebreak + +\part{Filters} +\setcounter{section}{0} + +The main function of this software is to apply filters to the open images. You can apply multiple filters in series to a single image, or to a whole bulk of images. More on that later. + +\begin{figure}[H] + \includegraphics[scale=0.47]{filters_list} + \centering +\end{figure} + +\section{Adding, ordering and removing filters} + + Your curreent filters list is located in the top-left tab.\\ + ~\\ + The list is initialized empty. You can add a filter by clicking on the '+' button of the 'Add filter' item. This will add a default filter.\\ + ~\\ + After you've added multiple filters, you can reorganize them by dragging and dropping the filter item up and down the list. When applying the filters list (see below), they will be applied from top to bottom. For example, in the list above, 'Filter 1' will be applied to the source image, then 'Filter 2' will be applied to the resulting image. The results from 'Filter 2' will then be displayed on the bottom image.\\ + ~\\ + You can then remove a fliter by clicking on the cross located on the right of the desired filter item. + +\section{Editing filters} + +You can select the filter you would like to edit by clicking on the left pen icon of the desired filter item in the filters list tab. That will open the edition options of the selected filters in the filter edit tab, just underneath the list.\\ +~\\ +All filters have two common fields : the name of the filter (user-defined, it will be the name displayed on the list, to help the user identify which filter is which), and the nature of the filter.\\ +~\\ +There are two types of filters : basic filters and advanced filters, which can be selected with the drop down menu, and which we will be discussing below. + +\subsection{Basic filters} + +Basic filters are filters that do standard image modifications, such as color corrections, enhancement, contrast, hue, saturation modifications etc.\\ +~\\ +Each of those filters has its own parameter(s), that you can set in the edit tab, using sliders, color palette and basic parameter selection. + +\begin{figure}[H] + \includegraphics[scale=0.47]{simple_filter_edit} + \centering +\end{figure} + +\subsection{Advanced filters (server settings)} + +Those filters are more advanced in the way that they apply computer vision algorithms to detect very specific features of an image.\\ +~\\ +Those algorithms are ran in the back-end through a Python instance. They use multiple settings, that you can edit by clicking on the 'Edit server settings' button (available in the filter edit tab when editing an advanced filter).\\ + +\begin{figure}[H] + \includegraphics[scale=0.4]{advanced_settings} + \centering +\end{figure} + +From this window, you can select whether you would like to use the default value for each setting, or specify your own (which you can manually set).\\ +~\\ +Don't forget to save the parameters (by clicking on the button) before exiting!\\ +~\\ +Please also note that if you have multiple advanced filters in your filters list, there will only be one instance of the server settings (they will all use the same settings). This is a feature we are working on... + +\section{Applying filters} + +Once you have created your filters list, ordered the filters item and updated all the settings, you are ready to apply them to your opened image!\\ +~\\ +To do so, you need to click on the 'Apply filters' button, in the filters list tab. You will need an opened image in order to apply the filters, otherwise the button will be greyed out.\\ +~\\ +Once all the filters have been ran on the image, the bottom image will be updated with the result. You will then be able to save it to your computer (using the 'Save' button of the action tab), or modify your filters, and re-apply them to the top image.\\ +~\\ +\textit{Please note that if you run a new filters list on the top image, the results from the previous run will not be saved. Make sure to save your result before running a new batch of filters.}\\ +~\\ +\textit{Please also note that depending on your filters list and the power of your computer, the image might take quite a bit of time to update.} + +\pagebreak + +\part{Bulk actions} +\setcounter{section}{0} + +The CVERT software also allows you to execute some actions to multiplle files in a single run. + +\section{Selecting source and target} + +\subsection{Selecting source files} + +In the action tab, you need to click on the 'Input' button. Then a prompt will ask you to select the image files to apply the actions on. Those files WILL NOT be modified, but copied, so you have no risk of losing the orign files. +You can select multiple image files (same file types support as when clicking on 'Open').\\ +~\\ +Once you have selected the desired files, you will see that the Input button display will have been updated with the number of files you have selected. + +\subsection{Selecting output folder} + +In the action Tab, you need to click on the 'Output' button. Then a prompt will ask you to select the destination folder, where the algorithm will save the image results, after executing the action.\\ +~\\ +We advise you to use an empty folder as destination, in order to avoid accidentally overwriting files. + +\section{Actions} + +By executing the followin actions, all the files selected as input will be copied, processed and saved in the destination folder. + +\subsection{Bulk fiiltering} + +In order for this button ('Apply filters') to be clickable, you need to have a valid filters list, valid input files and output folder.\\ +~\\ +When clicking on this button, the current filters list will be applied to all the input images, and the resulting images will all be saved in the output folder. + +\subsection{Bulk GIS fetch} +In order for this button ('Look for GPS') to be clickable, you need to have a valid GIS marker position, valid input files and output folder.\\ +~\\ +The software will check all the input files for DJI metadata (position, camera orientation etc.) to check if the marker position overlays with any of the images. If so, it will add a marker to the image at the marker position, and write it to the destination folder.\\ +~\\ +Please note that the image will NOT be saved if no DJI metadata is found, or if the marker doesn't overlay with the image.\\ +~\\ +Please also note thatthe used FOV is the one set on the GIS tab (make sure you have updated it, and all images are taken from the same model of drone), and the GIS metadata for the input images cannot be manually modified. That may lead to a few imprecise results (a few meters max). + +\pagebreak + +\part{Notes and debug} +\setcounter{section}{0} + +\paragraph{} You may notice a 'server' tab in the bottom left corner : that is the IP address and port to the advanced filters server. It is designed to be used only by developers. Please do not modify its settings. If you accidentally changed its settings, you can click on the 'reset' button right next to it to restore it to its default settings.\\ + +\paragraph{} In case you encounter a bug, you can open and close the developers tools, by pressing (at the same time) Ctrl+Shift+I. If you read an error message, it might tell you how to solve the issue. If not, you can report the issue to us. + +\end{document} diff --git a/README.md b/README.md index 85a6337..96d74e8 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,145 @@ -# Computer-Vision-Emergency-Response-Toolkit - -Release version can be found at: http://cver.hrail.crasar.org - -## Visual Studio -* Microsoft .NET Framework 4.6.1 -* Microsoft Visual Studio 2017 Installer Projects Extension - * This can be installed by clicking ```Tools -> Extensions and Updates... -> Online``` then entering the name of the extension in the search box - - -## Python Setup -* Python 3.6.4 - * https://www.python.org -* OpenCV - * pip install opencv-python - * pip install opencv-contrib-python - * https://opencv.org - * Tutorial - * http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html -* Numpy - * pip install numpy - * http://www.numpy.org -* SciPy - * pip install scipy - * https://www.scipy.org -* Scikit-Learn - * pip install scikit-learn - * http://scikit-learn.org/stable/ -* Spectral (SPy) - * pip install spectral - * http://www.spectralpython.net -* Argparse - * pip install argparse -* Matplotlib - * pip install matplotlib - * https://matplotlib.org +# Where is the Missing Person Computer Vision Contest +Please visit [the contest website](https://computervisionrescue.wixsite.com/contest) for more information. + +* [User's Manual](Documentation/users%20manual/users_manual.pdf), +* [Developer's guide](Documentation/developers%20guide/developers_guide.pdf). + +## Introduction +I basically first thought that C# code from [the initial repository](https://github.com/cvertdev/Computer-Vision-Emergency-Response-Toolkit) was not a great idea, for the following reasons : +* Not really user-friendly, +* Limited only to Windows Platforms, +* Python packages and .NET framework need to be installed (almost) manually. + +*(Also, I'm very bad at C# coding...)* +That is why I decided to take an other direction : + +## My idea + +I am IN LOVE with a particular HTML / CSS / Javascript (Typescript) framework, [Angular](https://angular.io), for the following reasons : +* Web-based frameworks are extremely user-friendly, +* [NPM](https://www.npmjs.com/) is full of AMAZING copyright-free libraries, +* [Electron](https://electronjs.org/) enables you to compile ANY Angular project into desktop apps for all Windows, Mac and Linux platforms with [Electron-builder](https://www.electron.build/), (just like [Ionic](https://ionicframework.com) for mobile app versions), +* [Typescript](http://www.typescriptlang.org/) as a GREAT web-based language that enables you to interface your app with any running server (see below). + +### Software architecture + +#### Right now : +I decided to use the following architecture for my software : + +``` + SINGLE executable file ++------------------------------------------------------+ +| +-------------------------+ | +| | FRONT-END | | +| | Angular app | | +| | (Electron) | | +| +-------------------------+ | +| | User Interface | | +| | +---------------------+ | | +| | |Category 1|Category 2| | | +| | | | | | | +| | | | HTML | | | +| | | JIMP | canvas | | | +| | | |processing| | | +| | | | | | | +| | +---------------------+ | | +| +-------------------------+ | +| | Category 3 | | +| | | | +| | HTTP Connexion |==========++ | +| +-------+--------+--------+ || | +| | ^ || | ++----------------------|--------|-------------------||-+ +| Processing request: | | Algorithm results:|| | +| * source image, | | * result image, || | +| * algorithm, | | * time, || | +| * parameters | | * percentage || | ++----------------------|--------|-------------------||-+ +| v | || | +| +------+--------+-------+ || | +| | BACK-END |<==========++ | +| | Python server | launched | +| | HTTP connexion | through | +| +-----------------------+ subprocess | +| |Algorithm 1|Algorithm 2| | +| +-----------------------+ | +| |Algorithm 3|Algorithm 4| | +| +-----------------------+ | ++------------------------------------------------------+ +``` +* __Front-end__ : Angular App (compiled into a single executable using [Electron](https://electronjs.org/) & [Electron-builder](https://www.electron.build/)), +* __Back-end__ : Python server (compiled into a single executable using [PyInstaller](https://www.pyinstaller.org/)). + +__NO FRAMEWORK INSTALLATION IS NECESSARY !__ +__THE WHOLE APP RESIDES IN A SINGLE EXECUTABLE FILE !__ + + +Indeed, PyInstaller compiles the server into a single executable file (platform-specific), then that executable is compiled into the Electron app with the ExtraResources directory. + +That will enable me to reuse all of the [original CVERT Python algorithms](https://github.com/cvertdev/Computer-Vision-Emergency-Response-Toolkit/tree/master/Computer%20Vision%20Toolkit/Computer%20Vision%20Toolkit/lib/Algorithms), but also simplify the process of [adding a new algorithm](https://github.com/cvertdev/Computer-Vision-Emergency-Response-Toolkit/wiki/Adding-a-New-Algorithm) by simply adding the Python file, and linking it to the front end. The rest will be handled during compilation. + +This way, the final user doesn't have to install ANYTHING, just launch the executable file. (He can also install the software just like any other software, through an installer, then find it later on, on his OS). + +### Used libraries and packages +__Front-end:__ +[Node](https://nodejs.org/en/) & [npm](https://www.npmjs.com/), with the following dev libraries: +* [Angular](https://angular.io), +* [Electron](https://electronjs.org/), +* [Electron-builder](https://www.electron.build/), + +And the following prod libraries: +* [Angular Material](https://material.angular.io/), +* [Bootstrap](https://getbootstrap.com/), +* [Jimp](https://www.npmjs.com/package/jimp), +* [Exifr](https://www.npmjs.com/package/exifr), +* [Fast-xml-parser](https://www.npmjs.com/package/fast-xml-parser), +* [Chart.js](https://www.chartjs.org/), +* [Three.js](https://threejs.org/), +* [usng.js](https://www.npmjs.com/package/usng.js) + +*You can find all of the npm libraries in [package.json](CVERT-ng/package.json).* + +__Back-end:__ +[Python 3.6](https://www.python.org/) running a web server to handle image processing requests. +It uses the following dev libraries: +* [PyInstaller](https://www.pyinstaller.org/), +* [pip3](https://pip.pypa.io/en/stable/). + +And the following prod libraries: +* [Flask](https://palletsprojects.com/p/flask/), +* All the [necessary libraries](python-server/requirements.txt) for the image processing algorithms. + +## For developers : +__NOTE:__ *I am a Linux user. You might need to look around for equivalent Windows or Mac commands and installation processes...* + +### Front-end +Install __NodeJS__ (that will automatically install __npm__), and [Angular](https://angular.io/guide/setup-local). Then: +```bash +git clone https://github.com/polofgrs/Computer-Vision-Emergency-Response-Toolkit.git +cd CVERT-ng +npm i +npm run electron +``` +Then, if you want to compile the Electron project into an executable file on your OS : +```bash +./node_modules/.bin/electron-builder +``` +### Back-end +Install [Python 3.6](https://www.python.org/), then the packages in [requirements.txt](python-server/requirements.txt) with `pip3`, then run the server: +```bash +sudo apt-get install pyhton3-pip +cd python-server +pip3 install -r requirements.txt +python3 server.py +``` +And to compile it : +```bash +pyinstaller server.spec +``` +### Additional notes for developers +* __NOTE 1:__ *You HAVE to run `npm run electron` before running electron-builder, otherwise you will not have the updated files in `/dist`.* + +* __NOTE 2:__ *In case you want to compile the electron-builder app, you HAVE to have the compiled executable server files in `/python-server/dist/` (by running PyInstaller) for the OS you are developing on/for.* + +* __NOTE 3:__ *In case you are developing a Python function and would like to try it out without using `npm run electron` for the front-end, you can still launch the front-end compiled app, and set up the server to communicate with your local python development server on an other port (bottom left panel). The other server (default port 5000) will still be running, but should not cause any trouble. (just make sure to change your server port in `server.py`, and to launch it manually).* diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/AODNet.py b/python-server/Algorithms/AODNet.py similarity index 86% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/AODNet.py rename to python-server/Algorithms/AODNet.py index 209daee..eb202b5 100644 --- a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/AODNet.py +++ b/python-server/Algorithms/AODNet.py @@ -1,6 +1,7 @@ import numpy as np import cv2 from scipy.signal import convolve2d +from os import path import timer @@ -23,7 +24,7 @@ def conv(name, input, weights, bias): feat_maps = [] for j in range(weights.shape[1]): feat_maps.append(convolve2d(np.pad(input[0, j, :, :], conv_padding[name], 'constant'), weights[i, j, :, :], mode='valid')) - + filter_feat_maps.append(np.sum(feat_maps, axis=0) + bias[i]) filter_feat_maps = np.dstack(filter_feat_maps) @@ -40,7 +41,7 @@ def relu(input): def aod_net(x, np_weights): """ - Gives dehazed image output for input 'x' of size (1 x num_channels x height x width) + Gives dehazed image output for input 'x' of size (1 x num_channels x height x width) using given model weights for AOD-Net (All-in-One Dehazing Network, Boyi Li et. al., 2017) """ @@ -63,11 +64,11 @@ def aod_net(x, np_weights): return relu(output) -def Dehaze(img_path, Params = None, model_path = 'lib/Algorithms/pretrained_aod_net_numpy.npy'): +def Dehaze(img_path, Params = None, model_path = path.join(path.dirname(__file__), 'pretrained_aod_net_numpy.npy')): """ Primary function for interfacing with the dehazing network. Provide an image path and will return a numpy image. - Loading image: For the input image, cv2.imread always loads a 3-channel image which is the requirement of the AOD-Net. + Loading image: For the input image, cv2.imread always loads a 3-channel image which is the requirement of the AOD-Net. So load any grayscale image as a 3-channel image. """ @@ -92,13 +93,13 @@ def Dehaze(img_path, Params = None, model_path = 'lib/Algorithms/pretrained_aod_ x = np.expand_dims(img, axis=0).transpose(0,3,1,2) # Loading model weights - np_weights = np.load(model_path).item() + np_weights = np.load(model_path, allow_pickle=True).item() output = aod_net(x, np_weights) output = np.squeeze(output) output = (output*255).astype(np.uint8) # RGB numpy image array output = output.transpose(1,2,0) - + #Convert back to BGR output = cv2.cvtColor(output, cv2.COLOR_RGB2BGR) #OpenCV's RGB to BGR @@ -109,17 +110,16 @@ def Dehaze(img_path, Params = None, model_path = 'lib/Algorithms/pretrained_aod_ -def dehaze_and_display(img_path, model_path = 'lib/Algorithms/pretrained_aod_net_numpy.npy'): +def dehaze_and_display(img_path, model_path = path.join(path.dirname(__file__), 'pretrained_aod_net_numpy.npy')): """ - Dehazes and then displays the dehazed image. + Dehazes and then displays the dehazed image. """ - dehazed_image = Dehaze(img_path, model_path= model_path) from PIL import Image PIL_img = Image.fromarray(dehazed_image) PIL_img.show() - + # --------------------------- Debugging and Testing ------------------------------ # if __name__ == '__main__': -# dehaze_and_display(img_path = './Examples/sample5.jpg'); \ No newline at end of file +# dehaze_and_display(img_path = './Examples/sample5.jpg'); diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/DXDetector.py b/python-server/Algorithms/DXDetector.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/DXDetector.py rename to python-server/Algorithms/DXDetector.py diff --git a/python-server/Algorithms/GPSfetch.py b/python-server/Algorithms/GPSfetch.py new file mode 100644 index 0000000..0ce2878 --- /dev/null +++ b/python-server/Algorithms/GPSfetch.py @@ -0,0 +1,203 @@ +import timer +from PIL import Image +from PIL.ExifTags import TAGS, GPSTAGS +import os +import bs4 +import cv2 +import math +import numpy as np + +def GpsFetch(sourcePath, targetPath, gpsTarget): + t = timer.Timer() + t.start() + + for i in range(0, len(sourcePath)): + path = sourcePath[i] + xmp = getXMP(path) + if xmp is None: + print('ignoring ' + sourcePath[i]) + else: + pixels = findPixel(xmp, gpsTarget) + if pixels is not None: + print('GPS intersecting ' + sourcePath[i]) + image = drawCircle(sourcePath[i], pixels) + saveImage(image, sourcePath[i], targetPath) + else: + print('GPS not intersecting ' + sourcePath[i]) + t.stop() + return t.get_time() + +def getXMP(path): + # XMP + fd = open(path, 'rb') + d = fd.read() + xmp_start = d.find(b' math.pi: + hdg -= 2 * math.pi + while hdg < -math.pi: + hdg += 2 * math.pi + return hdg + +############# Helper functions ##################### + +def get_lat_lng(exif_data): + lat = None + lng = None + if "GPSInfo" in exif_data: + gps_info = exif_data["GPSInfo"] + gps_latitude = get_if_exist(gps_info, "GPSLatitude") + gps_latitude_ref = get_if_exist(gps_info, 'GPSLatitudeRef') + gps_longitude = get_if_exist(gps_info, 'GPSLongitude') + gps_longitude_ref = get_if_exist(gps_info, 'GPSLongitudeRef') + if gps_latitude and gps_latitude_ref and gps_longitude and gps_longitude_ref: + lat = convert_to_degress(gps_latitude) + if gps_latitude_ref != "N": + lat = 0 - lat + lng = convert_to_degress(gps_longitude) + if gps_longitude_ref != "E": + lng = 0 - lng + return lat, lng + +def get_if_exist(data, key): + if key in data: + return data[key] + return None + +def convert_to_degress(value): + d0 = value[0][0] + d1 = value[0][1] + d = float(d0) / float(d1) + + m0 = value[1][0] + m1 = value[1][1] + m = float(m0) / float(m1) + + s0 = value[2][0] + s1 = value[2][1] + s = float(s0) / float(s1) + + return d + (m / 60.0) + (s / 3600.0) \ No newline at end of file diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/RXDetector.py b/python-server/Algorithms/RXDetector.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/RXDetector.py rename to python-server/Algorithms/RXDetector.py diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/__init__.py b/python-server/Algorithms/__init__.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/__init__.py rename to python-server/Algorithms/__init__.py diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/pretrained_aod_net_numpy.npy b/python-server/Algorithms/pretrained_aod_net_numpy.npy similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/pretrained_aod_net_numpy.npy rename to python-server/Algorithms/pretrained_aod_net_numpy.npy diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/timer.py b/python-server/Algorithms/timer.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/Algorithms/timer.py rename to python-server/Algorithms/timer.py diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/algorithms.py b/python-server/algorithms.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/algorithms.py rename to python-server/algorithms.py diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/analyze.py b/python-server/analyze.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/analyze.py rename to python-server/analyze.py diff --git a/python-server/handlePost.py b/python-server/handlePost.py new file mode 100644 index 0000000..f2646a0 --- /dev/null +++ b/python-server/handlePost.py @@ -0,0 +1,41 @@ +import cv2 +import numpy as np +import base64 +import importlib + +def handleFilter(algorithm, sourcePath, parameters): + image = data_uri_to_cv2_img(sourcePath) + moduleName = 'Algorithms.' + algorithm['libName'] + module = importlib.import_module(moduleName) + resultImage = getattr(module, algorithm['pyFunction'])(image[1], parameters) + uri = cv2_img_to_data_uri(image[0], resultImage[0]) + resultDict = { + 'image': uri, + 'time': resultImage[1], + 'precentage': resultImage[2] + } + return(resultDict) + +def handleGPSfetch(sourcePath, targetPath, gpsTarget): + import Algorithms.GPSfetch + time = Algorithms.GPSfetch.GpsFetch(sourcePath, targetPath, gpsTarget) + resultDict = { + 'sourcePath': sourcePath, + 'targetPath': targetPath, + 'gpsTarget': gpsTarget + } + return(resultDict) + + +def data_uri_to_cv2_img(uri): + prefix = uri.split(',')[0] + encoded_data = uri.split(',')[1] + nparr = np.fromstring(base64.b64decode(encoded_data), np.uint8) + img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) + return ([prefix, img]) + + +def cv2_img_to_data_uri(prefix, resultImage): + type = '.' + prefix.replace(';', '/').split('/')[1] + string = base64.b64encode(cv2.imencode(type, resultImage)[1]).decode() + return(string) diff --git a/python-server/requirements.txt b/python-server/requirements.txt new file mode 100644 index 0000000..8b7fd87 --- /dev/null +++ b/python-server/requirements.txt @@ -0,0 +1,21 @@ +# requirements file +# run using Python >= 3.6 with `pip3 install -r requirements.txt` + +opencv-python +opencv-contrib-python +numpy +scipy +scikit-learn +spectral +argparse +matplotlib +pillow +beautifulsoup4 +tornado + +flask +flask_cors + +pyinstaller + +pypiwin32; sys_platform == 'win32' diff --git a/python-server/server.py b/python-server/server.py new file mode 100644 index 0000000..e96d440 --- /dev/null +++ b/python-server/server.py @@ -0,0 +1,33 @@ +#!/usr/bin/python +# import sys +# from __future__ import division + +from flask import Flask, request, Response +from flask_cors import CORS + +import handlePost + +app = Flask(__name__) +app.config['JSON_SORT_KEYS'] = False +CORS(app) + +@app.route('/', methods=['GET', 'POST']) +def get(): + if request.method == 'POST': + if request.json.get('targetPath') == 'response': + algorithm = request.json.get('algorithm') + sourcePath = request.json.get('sourcePath') + parameters = request.json.get('parameters') + response = handlePost.handleFilter(algorithm, sourcePath, parameters) + else: + sourcePath = request.json.get('sourcePath') + targetPath = request.json.get('targetPath') + gpsTarget = request.json.get('gpsTarget') + response = handlePost.handleGPSfetch(sourcePath, targetPath, gpsTarget) + elif request.method == 'GET': + response = Response(status=200) + return(response) + + +if __name__ == "__main__": + app.run(debug=True, host='0.0.0.0', port=5000) diff --git a/python-server/server.spec b/python-server/server.spec new file mode 100644 index 0000000..d5f0752 --- /dev/null +++ b/python-server/server.spec @@ -0,0 +1,51 @@ +# -*- mode: python ; coding: utf-8 -*- +import os + +block_cipher = None + +############## Add your files here ############# + +imports = [ + "Algorithms.DXDetector", + "Algorithms.RXDetector", + "Algorithms.AODNet" +] + +extraFiles = [ + "pretrained_aod_net_numpy.npy" +] + +############################################## + +dataFiles = [] +for file in extraFiles: + dataFiles.append((os.path.join('Algorithms', file), 'Algorithms')) + +a = Analysis(['server.py'], + pathex=[os.getcwd()], + binaries=[], + datas=dataFiles, + hiddenimports=imports, + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='server', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True ) diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/status.py b/python-server/status.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/status.py rename to python-server/status.py diff --git a/Computer Vision Toolkit/Computer Vision Toolkit/lib/timer.py b/python-server/timer.py similarity index 100% rename from Computer Vision Toolkit/Computer Vision Toolkit/lib/timer.py rename to python-server/timer.py