Repository: alexolivero/Obscurify Branch: master Commit: 865241b09119 Files: 132 Total size: 15.2 MB Directory structure: gitextract_orr04cxp/ ├── .gitignore ├── README.md ├── frontend/ │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── dist/ │ │ └── obscurify3/ │ │ ├── index.html │ │ ├── main-es2015.js │ │ ├── main-es5.js │ │ ├── polyfills-es2015.js │ │ ├── polyfills-es5.js │ │ ├── runtime-es2015.js │ │ ├── runtime-es5.js │ │ ├── styles-es2015.js │ │ ├── styles-es5.js │ │ ├── vendor-es2015.js │ │ └── vendor-es5.js │ ├── e2e/ │ │ ├── protractor.conf.js │ │ ├── src/ │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ ├── karma.conf.js │ ├── ngsw-config.json │ ├── package.json │ ├── src/ │ │ ├── app/ │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── components/ │ │ │ │ ├── about/ │ │ │ │ │ ├── about.component.html │ │ │ │ │ ├── about.component.scss │ │ │ │ │ ├── about.component.spec.ts │ │ │ │ │ └── about.component.ts │ │ │ │ ├── artist/ │ │ │ │ │ ├── artist-card/ │ │ │ │ │ │ ├── artist-card.component.html │ │ │ │ │ │ ├── artist-card.component.scss │ │ │ │ │ │ ├── artist-card.component.spec.ts │ │ │ │ │ │ └── artist-card.component.ts │ │ │ │ │ ├── artist-list/ │ │ │ │ │ │ ├── artist-list.component.html │ │ │ │ │ │ ├── artist-list.component.scss │ │ │ │ │ │ ├── artist-list.component.spec.ts │ │ │ │ │ │ └── artist-list.component.ts │ │ │ │ │ ├── artist-nav/ │ │ │ │ │ │ ├── artist-nav.component.html │ │ │ │ │ │ ├── artist-nav.component.scss │ │ │ │ │ │ ├── artist-nav.component.spec.ts │ │ │ │ │ │ └── artist-nav.component.ts │ │ │ │ │ └── track-card/ │ │ │ │ │ ├── track-card.component.html │ │ │ │ │ ├── track-card.component.scss │ │ │ │ │ ├── track-card.component.spec.ts │ │ │ │ │ └── track-card.component.ts │ │ │ │ ├── footer/ │ │ │ │ │ ├── footer.component.html │ │ │ │ │ ├── footer.component.scss │ │ │ │ │ ├── footer.component.spec.ts │ │ │ │ │ └── footer.component.ts │ │ │ │ ├── home/ │ │ │ │ │ ├── home.component.html │ │ │ │ │ ├── home.component.scss │ │ │ │ │ ├── home.component.spec.ts │ │ │ │ │ └── home.component.ts │ │ │ │ ├── intro/ │ │ │ │ │ ├── intro.component.html │ │ │ │ │ ├── intro.component.scss │ │ │ │ │ ├── intro.component.spec.ts │ │ │ │ │ └── intro.component.ts │ │ │ │ ├── login/ │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.scss │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── moods-graph/ │ │ │ │ │ ├── moods-graph.component.html │ │ │ │ │ ├── moods-graph.component.scss │ │ │ │ │ ├── moods-graph.component.spec.ts │ │ │ │ │ └── moods-graph.component.ts │ │ │ │ ├── obscurity-graph/ │ │ │ │ │ ├── obscurity-graph.component.html │ │ │ │ │ ├── obscurity-graph.component.scss │ │ │ │ │ ├── obscurity-graph.component.spec.ts │ │ │ │ │ └── obscurity-graph.component.ts │ │ │ │ ├── obscurity-rating/ │ │ │ │ │ ├── obscurity-rating.component.html │ │ │ │ │ ├── obscurity-rating.component.scss │ │ │ │ │ ├── obscurity-rating.component.spec.ts │ │ │ │ │ └── obscurity-rating.component.ts │ │ │ │ ├── privacy/ │ │ │ │ │ ├── privacy.component.html │ │ │ │ │ ├── privacy.component.scss │ │ │ │ │ ├── privacy.component.spec.ts │ │ │ │ │ └── privacy.component.ts │ │ │ │ ├── recommendations/ │ │ │ │ │ ├── recommendations.component.html │ │ │ │ │ ├── recommendations.component.scss │ │ │ │ │ ├── recommendations.component.spec.ts │ │ │ │ │ └── recommendations.component.ts │ │ │ │ ├── spotify-auth/ │ │ │ │ │ ├── spotify-auth.component.html │ │ │ │ │ ├── spotify-auth.component.scss │ │ │ │ │ ├── spotify-auth.component.spec.ts │ │ │ │ │ └── spotify-auth.component.ts │ │ │ │ └── top-genres/ │ │ │ │ ├── top-genres.component.html │ │ │ │ ├── top-genres.component.scss │ │ │ │ ├── top-genres.component.spec.ts │ │ │ │ └── top-genres.component.ts │ │ │ ├── scss/ │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _variables.scss │ │ │ │ └── components/ │ │ │ │ ├── _header.scss │ │ │ │ └── _slate.scss │ │ │ ├── services/ │ │ │ │ ├── browserCheck.ts │ │ │ │ ├── infoService.ts │ │ │ │ ├── intersectionObserver.ts │ │ │ │ ├── obscurifyService.ts │ │ │ │ ├── spotifyAuth/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── service/ │ │ │ │ │ │ ├── auth.guard.ts │ │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ │ ├── spotify-auth.interceptor.ts │ │ │ │ │ │ └── token.service.ts │ │ │ │ │ └── shared/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── scopes-builder.ts │ │ │ │ │ ├── spotify-auth-config.i.ts │ │ │ │ │ ├── spotify-auth-response.i.ts │ │ │ │ │ └── spotify-scope.ts │ │ │ │ └── spotifyService.ts │ │ │ └── utilities/ │ │ │ └── obscurityFuncs.ts │ │ ├── assets/ │ │ │ └── .gitkeep │ │ ├── environments/ │ │ │ ├── environment.dev.ts │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── index.html │ │ ├── main.ts │ │ ├── manifest.webmanifest │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ └── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ └── tslint.json ├── generate_countries.js └── lambda/ ├── getObscurifyData.js ├── getUserHistory.js ├── saveUserHistory.js └── spotifyCallback.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store */node_modules ================================================ FILE: README.md ================================================ ## What's up ya'll, welcome to Obscurify The goal here is to show you as many interesting things about your Spotify listening history as possible, and to quantify how unique your taste is compared to everyone else. Obscurify is designed with a serverless architecture hosted in AWS. It uses API Gateway with Lambda to host the backend, while the frontend is deployed with Amplify. This project contains two elements: on the backend are some Lambda functions in the `/lambda` directory, and in `/frontend` an Angular 9 app. ================================================ FILE: frontend/README.md ================================================ # Obscurify3 This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.3.21. ## Development server Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. ## Code scaffolding Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. ## Build Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. ## Running unit tests Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). ## Running end-to-end tests Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). ## Further help To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). ================================================ FILE: frontend/angular.json ================================================ { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "obscurify3": { "projectType": "application", "schematics": { "@schematics/angular:component": { "style": "scss" } }, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { "outputPath": "dist/obscurify3", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", "aot": true, "assets": [ "src/favicon.ico", "src/assets", "src/manifest.webmanifest" ], "styles": [ "src/styles.scss" ], "stylePreprocessorOptions": { "includePaths": [ "src/app/scss" ] }, "scripts": [] }, "configurations": { "production": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.prod.ts" } ], "optimization": true, "outputHashing": "all", "sourceMap": false, "extractCss": true, "namedChunks": false, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": false, "budgets": [ { "type": "initial", "maximumWarning": "2mb", "maximumError": "5mb" }, { "type": "anyComponentStyle", "maximumWarning": "6kb", "maximumError": "100kb" } ], "serviceWorker": true, "ngswConfigPath": "ngsw-config.json" }, "develop": { "fileReplacements": [ { "replace": "src/environments/environment.ts", "with": "src/environments/environment.dev.ts" } ], "outputHashing": "all", "sourceMap": true, "extractCss": true, "namedChunks": false, "extractLicenses": true, "vendorChunk": false, "buildOptimizer": false, "serviceWorker": true, "ngswConfigPath": "ngsw-config.json" } } }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { "port": 3000, "browserTarget": "obscurify3:build" }, "configurations": { "production": { "browserTarget": "obscurify3:build:production" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "browserTarget": "obscurify3:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "assets": [ "src/favicon.ico", "src/assets", "src/manifest.webmanifest" ], "styles": [ "src/styles.scss" ], "scripts": [] } }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { "tsConfig": [ "tsconfig.app.json", "tsconfig.spec.json", "e2e/tsconfig.json" ], "exclude": [ "**/node_modules/**" ] } }, "e2e": { "builder": "@angular-devkit/build-angular:protractor", "options": { "protractorConfig": "e2e/protractor.conf.js", "devServerTarget": "obscurify3:serve" }, "configurations": { "production": { "devServerTarget": "obscurify3:serve:production" } } } } }}, "defaultProject": "obscurify3" } ================================================ FILE: frontend/browserslist ================================================ # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. # For additional information regarding the format and rule options, please see: # https://github.com/browserslist/browserslist#queries # You can see what browsers were selected by your queries by running: # npx browserslist > 0.5% last 2 versions Firefox ESR not dead not IE 9-11 # For IE 9-11 support, remove 'not'. ================================================ FILE: frontend/dist/obscurify3/index.html ================================================ Obscurify3 ================================================ FILE: frontend/dist/obscurify3/main-es2015.js ================================================ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"],{ /***/ "./$$_lazy_route_resource lazy recursive": /*!******************************************************!*\ !*** ./$$_lazy_route_resource lazy namespace object ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function webpackEmptyAsyncContext(req) { // Here Promise.resolve().then() is used instead of new Promise() to prevent // uncaught exception popping up in devtools return Promise.resolve().then(function() { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } webpackEmptyAsyncContext.keys = function() { return []; }; webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; module.exports = webpackEmptyAsyncContext; webpackEmptyAsyncContext.id = "./$$_lazy_route_resource lazy recursive"; /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html": /*!**************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("\n\n\n\n\n\n\n\n\n\n\n\n\n"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/about/about.component.html": /*!*********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/about/about.component.html ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n Go back \n
\n
\n

\n About\n

\n

\n The goal of Obscurify is to help you better understand your own music taste. It uses\n Spotify's Web API to display your listening history, define\n your top genres, and to recommend under-the-radar songs you might like.\n

\n

\n The global popularity ratings of the artists in your lists are aggregated to result in an Obscurity score\n which is compared to the Obscurify users in your country to show how unique (or energetic, danceable, and happy) a music taste you have.\n

\n

\n Obscurify can also make playlists of the music in your track lists and place them in your Spotify library - including the historical snapshots\n that are saved when you view your Obscurify profile each month.\n

\n\n

\n Background Photo on login page by Photo by MARK S. on Unsplash. \n

\n
\n \n
\n

F.A.Q.

\n \n

How is my data used?

\n

\n To use Obscurify, you'll need to allow the app to have access to some of your account information -\n that being your username, the country your account is registered to, and the artists/tracks\n that appear on your lists.\n

\n \n

Where does the artist and track ranking come from?

\n

\n The content and order of your lists come directly from Spotify's API.\n Popularity, genres, and musical traits are all determined by Spotify.\n

\n \n

Why are there no (or few) results showing up in my All-Time and Current lists?

\n

\n If you listen in Private Mode, those songs will not be recorded and won't be reflected in either list.\n If your account is fairly new, it is normal for your All-Time list to be short, as it takes some time for Spotify to update their information.\n

\n \n

Some of the genres seem a little off...

\n

\n Spotify can attribute some artists with a few dozen genres. These range from very general (like \"rock\") to a little\n more interesting (like \"escape room\").\n

\n \n

My lists aren't updating

\n

\n There is no defined schedule for when Spotify updates the data in your lists - it's normal for delays, but expect an average of one to two weeks.\n

\n \n

I have some other issue (or concern, compliment, maybe a suggestion)

\n

\n I'd like to know about it! Send me an email!\n

\n
\n \n
\n"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-card/artist-card.component.html": /*!****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-card/artist-card.component.html ***! \****************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n \n
\n
\n {{ i + 1 }} / \n\n
\n

\n {{(artist.name.length < 20) ? (artist.name):(artist.name | slice:0:20)+'...' }}\n

\n

\n {{ artist.genres[0] }}, {{ artist.genres[1] }}\n

\n
\n \n
\n\n
\n \n
\n\n\n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-list/artist-list.component.html": /*!****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-list/artist-list.component.html ***! \****************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n

\n {{ this.navState.selectedHistory.name }} Top {{ navState.listType}}\n

\n
\n\n
\n
\n
\n\n \n\n
\n
\n\n \n\n
\n\n
\n\n \n\n
\n
\n\n \n\n
\n\n
\n \n \n\n
\n
\n\n\n
\n \n
\n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-nav/artist-nav.component.html": /*!**************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-nav/artist-nav.component.html ***! \**************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n\n
\n \n
\n
\n

Select

\n
\n \n \n
\n
\n

View History

\n \n \n \n {{ date.name }}\n \n \n
\n \n
\n \n
\n
\n \n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/track-card/track-card.component.html": /*!**************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/track-card/track-card.component.html ***! \**************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n\n \n \n
\n
\n {{ i + 1 }} /\n\n
\n

\n {{(track.name.length < 20) ? (track.name):(track.name | slice:0:20)+'...' }}\n

\n

\n {{ track.artists[0].name }}\n

\n
\n \n
\n\n
\n \n
\n\n\n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/footer/footer.component.html": /*!***********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/footer/footer.component.html ***! \***********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (""); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/home/home.component.html": /*!*******************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/home/home.component.html ***! \*******************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("\n
\n \n \n \n \n \n \n
\n\n\n\n"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/intro/intro.component.html": /*!*********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/intro/intro.component.html ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("\n\n
\n

Welcome to
Obscurify.

\n
\n\n
\n
\n \n
\n

Hello, {{ userName }}. Let's see how obscure your taste is...

\n
\n"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login/login.component.html": /*!*********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/login/login.component.html ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n

Obscurify.

\n\n

Learn more about your music taste and compare it to others' with Obscurify.

\n\n \n\n
\n
\n\n\n"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/moods-graph/moods-graph.component.html": /*!*********************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/moods-graph/moods-graph.component.html ***! \*********************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n
\n

\n Your Moods\n

\n
\n \n
\n
\n

Happiness

\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n

Danceability

\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-graph/obscurity-graph.component.html": /*!*****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-graph/obscurity-graph.component.html ***! \*****************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n
\n
\n

100

\n

Global Avg

\n
\n
\n

100

\n \n

Avg

\n
\n
\n

100

\n

My All-Time

\n
\n \n
\n

100

\n

My Recent

\n
\n
\n
\n

The lower your score, the more obscure your music taste is. The higher, the more relatable.

\n \n
\n
\n
\n\n "); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-rating/obscurity-rating.component.html": /*!*******************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-rating/obscurity-rating.component.html ***! \*******************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("\n
\n
\n\n
\n

\n Obscurity Rating\n

\n
\n\n
\n
\n \n

80%

\n\n

Your music is more obscure than\n 80%\n of 300000 US users on Obscurify.\n

\n\n \n
\n \n
\n\n \n \n \n \n\n \n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/recommendations/recommendations.component.html": /*!*****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/recommendations/recommendations.component.html ***! \*****************************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n
\n

\n Recommendations\n

\n
\n
\n
\n \n\n \n \n \n \n
\n
\n\n\n
\n
"); /***/ }), /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/top-genres/top-genres.component.html": /*!*******************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/top-genres/top-genres.component.html ***! \*******************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("
\n
\n
\n

\n Top Genres\n

\n
\n\n
\n
\n

{{ i + 1 }} / {{ item[0] }}

\n
\n\n \n
\n
\n
"); /***/ }), /***/ "./node_modules/tslib/tslib.es6.js": /*!*****************************************!*\ !*** ./node_modules/tslib/tslib.es6.js ***! \*****************************************/ /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; } return __assign.apply(this, arguments); } function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __exportStar(m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result.default = mod; return result; } function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } /***/ }), /***/ "./src/app/app-routing.module.ts": /*!***************************************!*\ !*** ./src/app/app-routing.module.ts ***! \***************************************/ /*! exports provided: AppRoutingModule */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function() { return AppRoutingModule; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var _components_login_login_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/login/login.component */ "./src/app/components/login/login.component.ts"); /* harmony import */ var _components_home_home_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/home/home.component */ "./src/app/components/home/home.component.ts"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/spotify-auth/spotify-auth.component */ "./src/app/components/spotify-auth/spotify-auth.component.ts"); /* harmony import */ var _components_about_about_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/about/about.component */ "./src/app/components/about/about.component.ts"); const routes = [ { path: 'about', component: _components_about_about_component__WEBPACK_IMPORTED_MODULE_7__["AboutComponent"] }, { path: 'login', component: _components_login_login_component__WEBPACK_IMPORTED_MODULE_3__["LoginComponent"] }, { path: 'home', component: _components_home_home_component__WEBPACK_IMPORTED_MODULE_4__["HomeComponent"] }, { path: '', redirectTo: 'login', pathMatch: 'full' }, { path: 'authorized', canActivate: [_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__["AuthGuard"]], component: _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_6__["SpotifyAuthComponent"] } ]; let AppRoutingModule = class AppRoutingModule { }; AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)], exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] }) ], AppRoutingModule); /***/ }), /***/ "./src/app/app.component.scss": /*!************************************!*\ !*** ./src/app/app.component.scss ***! \************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".app {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n padding: 0 1em;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksaURBQUE7RUFDQSxjQUFBO0FDRkoiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdtaXhpbnMnO1xuXG5cbi5hcHAge1xuICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbn0iLCIuYXBwIHtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgcGFkZGluZzogMCAxZW07XG59Il19 */"); /***/ }), /***/ "./src/app/app.component.ts": /*!**********************************!*\ !*** ./src/app/app.component.ts ***! \**********************************/ /*! exports provided: AppComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppComponent", function() { return AppComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); let AppComponent = class AppComponent { constructor(tokenSvc, authService, router) { this.tokenSvc = tokenSvc; this.authService = authService; this.router = router; this.title = 'obscurify3'; } ngOnInit() { this.authService.authorizedStream.subscribe((x) => { if (x) { this.router.navigate(['home']); } }); } getUserInfo() { } logout() { this.tokenSvc.clearToken(); this.router.navigate(['login']); } }; AppComponent.ctorParameters = () => [ { type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }, { type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"] } ]; AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-root', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./app.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./app.component.scss */ "./src/app/app.component.scss")).default] }) ], AppComponent); /***/ }), /***/ "./src/app/app.module.ts": /*!*******************************!*\ !*** ./src/app/app.module.ts ***! \*******************************/ /*! exports provided: AppModule */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppModule", function() { return AppModule; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser/animations */ "./node_modules/@angular/platform-browser/fesm2015/animations.js"); /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/cdk/platform */ "./node_modules/@angular/cdk/esm2015/platform.js"); /* harmony import */ var _angular_material_radio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/material/radio */ "./node_modules/@angular/material/esm2015/radio.js"); /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); /* harmony import */ var _angular_flex_layout__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/flex-layout */ "./node_modules/@angular/flex-layout/esm2015/flex-layout.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm2015/snack-bar.js"); /* harmony import */ var _angular_material_menu__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @angular/material/menu */ "./node_modules/@angular/material/esm2015/menu.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); /* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./app-routing.module */ "./src/app/app-routing.module.ts"); /* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./app.component */ "./src/app/app.component.ts"); /* harmony import */ var _components_home_home_component__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/home/home.component */ "./src/app/components/home/home.component.ts"); /* harmony import */ var _components_intro_intro_component__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/intro/intro.component */ "./src/app/components/intro/intro.component.ts"); /* harmony import */ var _components_top_genres_top_genres_component__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/top-genres/top-genres.component */ "./src/app/components/top-genres/top-genres.component.ts"); /* harmony import */ var _components_obscurity_rating_obscurity_rating_component__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./components/obscurity-rating/obscurity-rating.component */ "./src/app/components/obscurity-rating/obscurity-rating.component.ts"); /* harmony import */ var _components_obscurity_graph_obscurity_graph_component__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./components/obscurity-graph/obscurity-graph.component */ "./src/app/components/obscurity-graph/obscurity-graph.component.ts"); /* harmony import */ var _components_artist_artist_list_artist_list_component__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./components/artist/artist-list/artist-list.component */ "./src/app/components/artist/artist-list/artist-list.component.ts"); /* harmony import */ var _components_artist_artist_card_artist_card_component__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./components/artist/artist-card/artist-card.component */ "./src/app/components/artist/artist-card/artist-card.component.ts"); /* harmony import */ var _components_artist_artist_nav_artist_nav_component__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./components/artist/artist-nav/artist-nav.component */ "./src/app/components/artist/artist-nav/artist-nav.component.ts"); /* harmony import */ var _components_moods_graph_moods_graph_component__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./components/moods-graph/moods-graph.component */ "./src/app/components/moods-graph/moods-graph.component.ts"); /* harmony import */ var _components_recommendations_recommendations_component__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./components/recommendations/recommendations.component */ "./src/app/components/recommendations/recommendations.component.ts"); /* harmony import */ var _components_login_login_component__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./components/login/login.component */ "./src/app/components/login/login.component.ts"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./components/spotify-auth/spotify-auth.component */ "./src/app/components/spotify-auth/spotify-auth.component.ts"); /* harmony import */ var _services_infoService__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./utilities/obscurityFuncs */ "./src/app/utilities/obscurityFuncs.ts"); /* harmony import */ var _components_artist_track_card_track_card_component__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./components/artist/track-card/track-card.component */ "./src/app/components/artist/track-card/track-card.component.ts"); /* harmony import */ var _services_spotifyService__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./services/spotifyService */ "./src/app/services/spotifyService.ts"); /* harmony import */ var _components_about_about_component__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./components/about/about.component */ "./src/app/components/about/about.component.ts"); /* harmony import */ var _components_footer_footer_component__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./components/footer/footer.component */ "./src/app/components/footer/footer.component.ts"); /* harmony import */ var _services_obscurifyService__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./services/obscurifyService */ "./src/app/services/obscurifyService.ts"); let AppModule = class AppModule { }; AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({ declarations: [ _app_component__WEBPACK_IMPORTED_MODULE_13__["AppComponent"], _components_home_home_component__WEBPACK_IMPORTED_MODULE_14__["HomeComponent"], _components_intro_intro_component__WEBPACK_IMPORTED_MODULE_15__["IntroComponent"], _components_top_genres_top_genres_component__WEBPACK_IMPORTED_MODULE_16__["TopGenresComponent"], _components_obscurity_rating_obscurity_rating_component__WEBPACK_IMPORTED_MODULE_17__["ObscurityRatingComponent"], _components_obscurity_graph_obscurity_graph_component__WEBPACK_IMPORTED_MODULE_18__["ObscurityGraphComponent"], _components_artist_artist_list_artist_list_component__WEBPACK_IMPORTED_MODULE_19__["ArtistListComponent"], _components_artist_artist_card_artist_card_component__WEBPACK_IMPORTED_MODULE_20__["ArtistCardComponent"], _components_artist_artist_nav_artist_nav_component__WEBPACK_IMPORTED_MODULE_21__["ArtistNavComponent"], _components_moods_graph_moods_graph_component__WEBPACK_IMPORTED_MODULE_22__["MoodsGraphComponent"], _components_recommendations_recommendations_component__WEBPACK_IMPORTED_MODULE_23__["RecommendationsComponent"], _components_login_login_component__WEBPACK_IMPORTED_MODULE_24__["LoginComponent"], _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_26__["SpotifyAuthComponent"], _components_artist_track_card_track_card_component__WEBPACK_IMPORTED_MODULE_29__["TrackCardComponent"], _components_about_about_component__WEBPACK_IMPORTED_MODULE_31__["AboutComponent"], _components_footer_footer_component__WEBPACK_IMPORTED_MODULE_32__["FooterComponent"], ], imports: [ _angular_flex_layout__WEBPACK_IMPORTED_MODULE_7__["FlexLayoutModule"], _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_12__["AppRoutingModule"], _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_3__["BrowserAnimationsModule"], _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_4__["PlatformModule"], _angular_material_radio__WEBPACK_IMPORTED_MODULE_5__["MatRadioModule"], _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_9__["MatSnackBarModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_6__["FormsModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_12__["AppRoutingModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_8__["HttpClientModule"], _angular_material_menu__WEBPACK_IMPORTED_MODULE_10__["MatMenuModule"] ], providers: [ _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_28__["default"], _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["AuthService"], _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["TokenService"], _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["AuthGuard"], ngx_cookie_service__WEBPACK_IMPORTED_MODULE_11__["CookieService"], _services_infoService__WEBPACK_IMPORTED_MODULE_27__["InfoService"], _services_obscurifyService__WEBPACK_IMPORTED_MODULE_33__["default"], _services_spotifyService__WEBPACK_IMPORTED_MODULE_30__["SpotifyService"], [{ provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_8__["HTTP_INTERCEPTORS"], // Force interception to use your new shiny headers! useClass: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["SpotifyAuthInterceptor"], multi: true }] ], bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_13__["AppComponent"]] }) ], AppModule); /***/ }), /***/ "./src/app/components/about/about.component.scss": /*!*******************************************************!*\ !*** ./src/app/components/about/about.component.scss ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("main {\n width: 100%;\n background-color: #A9E5AC;\n}\n\nsection {\n margin: 2em 0;\n max-width: 772px;\n padding: 0 2em;\n}\n\nsection p {\n margin-bottom: 1em;\n}\n\nsection h2, section h3 {\n margin-bottom: 1em;\n}\n\n.back__btn {\n padding: 1em 1em;\n color: black;\n width: 200px;\n background-color: white;\n text-decoration: none;\n border-radius: 5px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYWJvdXQvYWJvdXQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYWJvdXQvYWJvdXQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0VBQ0EseUJBQUE7QUNDSjs7QURFQTtFQUNJLGFBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNDSjs7QURDSTtFQUNJLGtCQUFBO0FDQ1I7O0FERUk7RUFDSSxrQkFBQTtBQ0FSOztBRElBO0VBQ0ksZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtBQ0RKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hYm91dC9hYm91dC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIm1haW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNBOUU1QUM7XG59XG5cbnNlY3Rpb24ge1xuICAgIG1hcmdpbjogMmVtIDA7XG4gICAgbWF4LXdpZHRoOiA3NzJweDtcbiAgICBwYWRkaW5nOiAwIDJlbTtcblxuICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxuXG4gICAgaDIsIGgzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIH1cbn1cblxuLmJhY2tfX2J0biB7XG4gICAgcGFkZGluZzogMWVtIDFlbTtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG59IiwibWFpbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTlFNUFDO1xufVxuXG5zZWN0aW9uIHtcbiAgbWFyZ2luOiAyZW0gMDtcbiAgbWF4LXdpZHRoOiA3NzJweDtcbiAgcGFkZGluZzogMCAyZW07XG59XG5zZWN0aW9uIHAge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5zZWN0aW9uIGgyLCBzZWN0aW9uIGgzIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4uYmFja19fYnRuIHtcbiAgcGFkZGluZzogMWVtIDFlbTtcbiAgY29sb3I6IGJsYWNrO1xuICB3aWR0aDogMjAwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn0iXX0= */"); /***/ }), /***/ "./src/app/components/about/about.component.ts": /*!*****************************************************!*\ !*** ./src/app/components/about/about.component.ts ***! \*****************************************************/ /*! exports provided: AboutComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AboutComponent", function() { return AboutComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); let AboutComponent = class AboutComponent { constructor() { } ngOnInit() { } }; AboutComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-about', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./about.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/about/about.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./about.component.scss */ "./src/app/components/about/about.component.scss")).default] }) ], AboutComponent); /***/ }), /***/ "./src/app/components/artist/artist-card/artist-card.component.scss": /*!**************************************************************************!*\ !*** ./src/app/components/artist/artist-card/artist-card.component.scss ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".artist__card {\n width: 100%;\n min-width: 200px;\n height: 75px;\n position: relative;\n overflow: hidden;\n border-radius: 5px;\n box-shadow: 5px 5px 4px 4px rgba(0, 0, 0, 0.5);\n color: white;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n.artist__card img {\n position: absolute;\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n}\n.artist__card.active {\n height: 200px;\n}\n.artist__card.active .artist__card__info {\n height: 100%;\n}\n.artist__card span {\n margin-top: 2px;\n}\n.artist__card__info {\n height: 60px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n position: absolute;\n width: 100%;\n background: rgba(0, 0, 0, 0.55);\n border-radius: 5px;\n bottom: 0;\n box-sizing: border-box;\n padding: 1rem 0.5rem;\n font-size: 1.2rem;\n}\n.artist__card__info--secondary, .artist__card__info--primary {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n margin-left: 1rem;\n}\n.artist__card__info--primary {\n font-size: 1.2em;\n margin-bottom: 0.5rem;\n}\n.artist__card__external {\n color: white;\n cursor: pointer;\n}\n.artist__card button {\n margin-top: 1em;\n background: transparent;\n width: 125px;\n text-align: center;\n font-size: 12px;\n color: #fff;\n display: block;\n border-radius: 25px;\n font-weight: 700;\n margin: 1em auto 0;\n border: 2px solid #A9E5AC;\n padding: 1em;\n cursor: pointer;\n}\n@media (min-width: 768px) and (max-width: 1023px) {\n .artist__card {\n height: 150px;\n width: 200px;\n margin-bottom: 1em;\n }\n .artist__card.active {\n height: 150px;\n }\n}\n@media (min-width: 1024px) {\n .artist__card {\n height: 170px;\n width: 220px;\n margin-bottom: 1em;\n }\n .artist__card__info {\n font-size: 1rem;\n }\n .artist__card.active {\n height: 170px;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1jYXJkL2FydGlzdC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FydGlzdC9hcnRpc3QtY2FyZC9hcnRpc3QtY2FyZC5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksV0FBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLDhDQUFBO0VBQ0EsWUFBQTtFQUNBLGlEQUFBO0FDRko7QURJSTtFQUNJLGtCQUFBO0VBQ0Esb0JBQUE7S0FBQSxpQkFBQTtFQUNBLFdBQUE7QUNGUjtBREtJO0VBQ0ksYUFBQTtBQ0hSO0FES1E7RUFDSSxZQUFBO0FDSFo7QURPSTtFQUNJLGVBQUE7QUNMUjtBRFFJO0VBQ0ksWUFBQTtFQUNBLGlEQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsK0JBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxzQkFBQTtFQUNBLG9CQUFBO0VBQ0EsaUJBQUE7QUNOUjtBRFFRO0VBQ0ksaURBQUE7RUFDQSxpQkFBQTtBQ05aO0FEU1E7RUFDSSxnQkFBQTtFQUNBLHFCQUFBO0FDUFo7QURZSTtFQUNJLFlBQUE7RUFDQSxlQUFBO0FDVlI7QURhSTtFQUNJLGVBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7QUNYUjtBQzNERTtFRjJFRTtJQUNJLGFBQUE7SUFDQSxZQUFBO0lBQ0Esa0JBQUE7RUNaTjtFRGFNO0lBQ0ksYUFBQTtFQ1hWO0FBQ0Y7QUNoRUU7RUZpRkU7SUFDSSxhQUFBO0lBQ0EsWUFBQTtJQUNBLGtCQUFBO0VDZE47RURnQk07SUFDSSxlQUFBO0VDZFY7RURpQk07SUFDSSxhQUFBO0VDZlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1jYXJkL2FydGlzdC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5hcnRpc3RfX2NhcmQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiA3NXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0cmFuc2l0aW9uOiAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuMSwuMjUsMSk7XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgIFxuICAgICAgICAuYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgfVxuICAgIFxuICAgICZfX2luZm8ge1xuICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNTUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJvdHRvbTogMDsgIFxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAgXG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcblxuICAgICAgICAmLS1zZWNvbmRhcnksICYtLXByaW1hcnkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2V4dGVybmFsIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgd2lkdGg6IDEyNXB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW46IDFlbSBhdXRvIDA7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRwcmltYXJ5LWNvbG9yO1xuICAgICAgICBwYWRkaW5nOiAxZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbkBpbmNsdWRlIHRhYmxldCB7XG4gICAgLmFydGlzdF9fY2FyZCB7XG4gICAgICAgIGhlaWdodDogMTUwcHg7XG4gICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbkBpbmNsdWRlIGRlc2t0b3Age1xuICAgIC5hcnRpc3RfX2NhcmQge1xuICAgICAgICBoZWlnaHQ6IDE3MHB4O1xuICAgICAgICB3aWR0aDogMjIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcblxuICAgICAgICAmX19pbmZvIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGhlaWdodDogMTcwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbn0iLCIuYXJ0aXN0X19jYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIGhlaWdodDogNzVweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IDVweCA1cHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5hcnRpc3RfX2NhcmQgaW1nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgd2lkdGg6IDEwMCU7XG59XG4uYXJ0aXN0X19jYXJkLmFjdGl2ZSB7XG4gIGhlaWdodDogMjAwcHg7XG59XG4uYXJ0aXN0X19jYXJkLmFjdGl2ZSAuYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmFydGlzdF9fY2FyZCBzcGFuIHtcbiAgbWFyZ2luLXRvcDogMnB4O1xufVxuLmFydGlzdF9fY2FyZF9faW5mbyB7XG4gIGhlaWdodDogNjBweDtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjU1KTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3R0b206IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDFyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDEuMnJlbTtcbn1cbi5hcnRpc3RfX2NhcmRfX2luZm8tLXNlY29uZGFyeSwgLmFydGlzdF9fY2FyZF9faW5mby0tcHJpbWFyeSB7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xufVxuLmFydGlzdF9fY2FyZF9faW5mby0tcHJpbWFyeSB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5hcnRpc3RfX2NhcmRfX2V4dGVybmFsIHtcbiAgY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uYXJ0aXN0X19jYXJkIGJ1dHRvbiB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAxMjVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luOiAxZW0gYXV0byAwO1xuICBib3JkZXI6IDJweCBzb2xpZCAjQTlFNUFDO1xuICBwYWRkaW5nOiAxZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5hcnRpc3RfX2NhcmQge1xuICAgIGhlaWdodDogMTUwcHg7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgfVxuICAuYXJ0aXN0X19jYXJkLmFjdGl2ZSB7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuYXJ0aXN0X19jYXJkIHtcbiAgICBoZWlnaHQ6IDE3MHB4O1xuICAgIHdpZHRoOiAyMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIH1cbiAgLmFydGlzdF9fY2FyZF9faW5mbyB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICB9XG4gIC5hcnRpc3RfX2NhcmQuYWN0aXZlIHtcbiAgICBoZWlnaHQ6IDE3MHB4O1xuICB9XG59IiwiJHRhYmxldC13aWR0aDogNzY4cHg7XG4kZGVza3RvcC13aWR0aDogMTAyNHB4O1xuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHRhYmxldC13aWR0aH0pIGFuZCAobWF4LXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRoIC0gMXB4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JGRlc2t0b3Atd2lkdGh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGx0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QteHMge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn0iXX0= */"); /***/ }), /***/ "./src/app/components/artist/artist-card/artist-card.component.ts": /*!************************************************************************!*\ !*** ./src/app/components/artist/artist-card/artist-card.component.ts ***! \************************************************************************/ /*! exports provided: ArtistCardComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArtistCardComponent", function() { return ArtistCardComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/browserCheck */ "./src/app/services/browserCheck.ts"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); let ArtistCardComponent = class ArtistCardComponent { constructor(browserCheck, sanitizer) { this.browserCheck = browserCheck; this.sanitizer = sanitizer; this.activeView = false; } onClick(btn) { if (this.browserCheck.isDevice) { this.activeView = !this.activeView; } } onMouseEnter(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = true; } } onMouseLeave(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = false; } } ngOnInit() { } }; ArtistCardComponent.ctorParameters = () => [ { type: src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__["DomSanitizer"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], ArtistCardComponent.prototype, "artist", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], ArtistCardComponent.prototype, "i", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('touchend', ['$event.target']) ], ArtistCardComponent.prototype, "onClick", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseenter', ['$event.target']) ], ArtistCardComponent.prototype, "onMouseEnter", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseleave', ['$event.target']) ], ArtistCardComponent.prototype, "onMouseLeave", null); ArtistCardComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-artist-card', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./artist-card.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-card/artist-card.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./artist-card.component.scss */ "./src/app/components/artist/artist-card/artist-card.component.scss")).default] }) ], ArtistCardComponent); /***/ }), /***/ "./src/app/components/artist/artist-list/artist-list.component.scss": /*!**************************************************************************!*\ !*** ./src/app/components/artist/artist-list/artist-list.component.scss ***! \**************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.artist {\n max-width: 1024px;\n margin: 0 auto;\n padding: 2rem 0px;\n}\n\n.artist .header__title {\n text-transform: capitalize;\n}\n\n.artist__container {\n margin-top: 2em;\n}\n\n.artist__container__grid::after {\n content: \"\";\n flex: auto;\n}\n\n.artist__button {\n margin-top: 2em;\n background: #D8D8D8;\n border-radius: 23.5px;\n font-size: 16px;\n color: #090909;\n text-align: center;\n padding: 1em 2em;\n border: none;\n font-weight: bold;\n}\n\n.artist__button:hover {\n border: none;\n cursor: pointer;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1saXN0L2FydGlzdC1saXN0LmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvYXJ0aXN0LWxpc3QvYXJ0aXN0LWxpc3QuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUk7RUFDSSxjQUFBO0VBQ0EsOEJBQUE7RUFDQSwwQkFBQTtFQUFBLHVCQUFBO0VBQUEsa0JBQUE7RUFDQSxxQkFBQTtFQUNBLFNBQUE7QUNEUjs7QUNGQTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0FES0o7O0FDSEk7RUFDSSwwQkFBQTtBREtSOztBQ0ZJO0VBQ0ksZUFBQTtBRElSOztBQ0FRO0VBQ0ksV0FBQTtFQUNBLFVBQUE7QURFWjs7QUNFSTtFQUNJLGVBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0FEQVI7O0FDQ1E7RUFDSSxZQUFBO0VBQ0EsZUFBQTtBRENaIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvYXJ0aXN0LWxpc3QvYXJ0aXN0LWxpc3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZGVyIHtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDhweCBibGFjayBzb2xpZDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIuaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgcGFkZGluZy1ib3R0b206IDAuMmVtO1xuICBtYXJnaW46IDA7XG59XG5cbi5hcnRpc3Qge1xuICBtYXgtd2lkdGg6IDEwMjRweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDJyZW0gMHB4O1xufVxuLmFydGlzdCAuaGVhZGVyX190aXRsZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuLmFydGlzdF9fY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMmVtO1xufVxuLmFydGlzdF9fY29udGFpbmVyX19ncmlkOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGZsZXg6IGF1dG87XG59XG4uYXJ0aXN0X19idXR0b24ge1xuICBtYXJnaW4tdG9wOiAyZW07XG4gIGJhY2tncm91bmQ6ICNEOEQ4RDg7XG4gIGJvcmRlci1yYWRpdXM6IDIzLjVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogIzA5MDkwOTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxZW0gMmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59IiwiQGltcG9ydCAnbWl4aW5zJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvaGVhZGVyJztcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5cbi5hcnRpc3Qge1xuICAgIG1heC13aWR0aDogMTAyNHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDJyZW0gMHB4O1xuXG4gICAgLmhlYWRlcl9fdGl0bGUge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICB9XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgfVxuXG4gICAgJl9fY29udGFpbmVyX19ncmlkIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGZsZXg6IGF1dG87XG4gICAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI0Q4RDhEODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjMuNXB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGNvbG9yOiAjMDkwOTA5O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAyZW07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ== */"); /***/ }), /***/ "./src/app/components/artist/artist-list/artist-list.component.ts": /*!************************************************************************!*\ !*** ./src/app/components/artist/artist-list/artist-list.component.ts ***! \************************************************************************/ /*! exports provided: ArtistListComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArtistListComponent", function() { return ArtistListComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm2015/snack-bar.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! src/app/services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! src/app/services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/app/services/spotifyService */ "./src/app/services/spotifyService.ts"); let ArtistListComponent = class ArtistListComponent { constructor(element, intersectionObserverService, infoSvc, tokenSvc, spotifyService, snackBar) { this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.tokenSvc = tokenSvc; this.spotifyService = spotifyService; this.snackBar = snackBar; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.navState = { listType: 'artists', historyList: [ { name: 'Current', value: 'current' }, { name: 'All Time', value: 'allTime' }, ], selectedHistory: { name: 'Current', value: 'current' } }; this.allTimeArtists = []; this.currentArtists = []; this.allTimeTracks = []; this.currentTracks = []; this.sliceLimit = 10; this.showNav = false; } updateAppBackgroundColor() { this.appColor.emit(4); } ngOnInit() { this.infoSvc.fetchAllTimeArtists().subscribe((x) => { if (x.items) { this.allTimeArtists = [...x.items]; } }); this.infoSvc.fetchAllTimeTracks().subscribe((x) => { if (x.items) { this.allTimeTracks = [...x.items]; } }); this.infoSvc.fetchCurrentTracks().subscribe((x) => { if (x.items) { this.currentTracks = [...x.items]; } }); this.infoSvc.fetchCurrentArtists().subscribe((x) => { if (x.items) { this.currentArtists = [...x.items]; } }); this.infoSvc.getUserStream().subscribe((user) => { this.userInfo = Object.assign({}, user.userInfo); }); } ngAfterViewInit() { this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.20 }); this.intersectionObserverSubs = this.intersectionObserverService .getSubject() .subscribe(el => { if (el.isIntersecting) { console.log('is intersecting artists'); this.updateAppBackgroundColor(); this.showNav = true; } else { this.showNav = false; } }); } getHistory(data) { this.navState = Object.assign({}, data); console.log(this.navState); } createPlaylist() { let playlistName = ''; if (this.navState.selectedHistory.name === 'Current') { playlistName = 'Current'; } else { playlistName = 'All-Time Top Tracks // Obscurify'; } if (playlistName === 'Current') { const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; const dateObj = new Date(); const month = monthNames[dateObj.getMonth()]; // months from 1-12 const day = dateObj.getDate(); const year = dateObj.getFullYear() % 100; const newdate = month + ' ' + day + ' \'' + year; playlistName = newdate + ' // Obscurify'; } const config = { userID: this.userInfo.id, token: this.tokenSvc.oAuthToken, playlistName: (playlistName), tracks: null }; if (this.navState.selectedHistory.value === 'current') { config.tracks = this.currentTracks; } else { config.tracks = this.allTimeTracks; } this.spotifyService.makePlaylist(config).then((results) => { console.log('playlist', results); this.snackBar.open('Playlist Created in Spotify!', '', { duration: 5000, panelClass: 'panel-success' }); }).catch((err) => { console.log('playlist error', err); this.snackBar.open('Server Error. Please Try Again Later.', '', { duration: 5000, panelClass: 'panel-error' }); }); } showMore() { this.sliceLimit = 50; } showLess() { this.sliceLimit = 10; } }; ArtistListComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_3__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_4__["InfoService"] }, { type: src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__["TokenService"] }, { type: src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_6__["SpotifyService"] }, { type: _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__["MatSnackBar"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], ArtistListComponent.prototype, "appColor", void 0); ArtistListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-artist-list', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./artist-list.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-list/artist-list.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_3__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./artist-list.component.scss */ "./src/app/components/artist/artist-list/artist-list.component.scss")).default] }) ], ArtistListComponent); /***/ }), /***/ "./src/app/components/artist/artist-nav/artist-nav.component.scss": /*!************************************************************************!*\ !*** ./src/app/components/artist/artist-nav/artist-nav.component.scss ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".artist__nav {\n padding: 0em 2em 1em;\n height: 4em;\n width: 100%;\n box-sizing: border-box;\n position: fixed;\n bottom: 0;\n background: white;\n margin-left: -1em;\n border: 1px solid #E4E4E4;\n}\n.artist__nav.active {\n height: 70vh;\n}\n.artist__nav__mobile {\n margin-bottom: 2em;\n display: flex;\n justify-content: stretch;\n}\n.artist__nav__mobile button {\n font-size: 1em;\n border: none;\n background: none;\n width: 100%;\n text-align: right;\n margin-top: 1em;\n}\n.artist__nav__mobile button span {\n float: left;\n font-size: 24px;\n font-weight: bold;\n}\n.artist__nav__mobile button i {\n margin-left: 1em;\n}\n.artist__nav__content h2 {\n margin-bottom: 0.5em;\n}\n.artist__nav__main {\n margin-bottom: 2em;\n}\n.artist__nav__main .artist__nav__button {\n margin-right: 1em;\n font-size: 1em;\n}\n.artist__nav__history {\n margin-bottom: 2em;\n}\n.artist__nav__history h3 {\n margin-bottom: 1em;\n}\n.artist__nav__playlist button {\n background: #D8D8D8;\n padding: 8px 1em;\n font-size: 1em;\n border: none;\n font-weight: bold;\n}\n.artist__nav__playlist button i {\n margin-right: 5px;\n}\n.artist__nav__button {\n background: transparent;\n border: none;\n border-radius: 5px;\n font-size: 1.5em;\n padding: 8px 1em;\n border: 2px solid #e4e4e4;\n font-weight: bold;\n}\n.artist__nav__button.active {\n background: #A9E5AC;\n border: 2px solid #A9E5AC;\n}\n.artist__nav .select__item {\n margin-bottom: 1em;\n}\n@media screen and (min-width: 600px) {\n .artist__nav__content {\n width: 60%;\n max-width: 310px;\n }\n}\n@media screen and (max-width: 959px) {\n .artist__nav {\n box-shadow: 3px 14px 16px 8px #000;\n }\n .artist__nav__container {\n margin: 0em 0 0;\n }\n\n .artist__nav__content {\n margin: 0 auto;\n }\n}\n@media screen and (min-width: 960px) {\n .artist__nav {\n padding: 1em 1em;\n border-radius: 5px;\n height: auto;\n box-sizing: border-box;\n position: static;\n background: white;\n margin-left: 0em;\n }\n .artist__nav__container {\n margin: 0em 0 0;\n }\n .artist__nav__content {\n width: 100%;\n }\n .artist__nav__mobile {\n display: none;\n }\n .artist__nav.active {\n height: auto;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1uYXYvYXJ0aXN0LW5hdi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvYXJ0aXN0LW5hdi9hcnRpc3QtbmF2LmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLG9CQUFBO0VBRUEsV0FBQTtFQUNBLFdBQUE7RUFDQSxzQkFBQTtFQUNBLGVBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLHlCQUFBO0FDSEo7QURLSTtFQUNJLFlBQUE7QUNIUjtBRE1JO0VBQ0ksa0JBQUE7RUFDQSxhQUFBO0VBQ0Esd0JBQUE7QUNKUjtBRE1RO0VBQ0ksY0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7QUNKWjtBRE1ZO0VBQ0ksV0FBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtBQ0poQjtBRE9ZO0VBQ0ksZ0JBQUE7QUNMaEI7QURXUTtFQUNJLG9CQUFBO0FDVFo7QURjSTtFQUNJLGtCQUFBO0FDWlI7QURjUTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtBQ1paO0FEZ0JJO0VBSUksa0JBQUE7QUNqQlI7QURjUTtFQUNJLGtCQUFBO0FDWlo7QURrQlE7RUFDSSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBQ2hCWjtBRGlCWTtFQUNJLGlCQUFBO0FDZmhCO0FEb0JJO0VBQ0ksdUJBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EseUJBQUE7RUFDQSxpQkFBQTtBQ2xCUjtBRG1CUTtFQUNJLG1CRW5GSTtFRm9GSix5QkFBQTtBQ2pCWjtBRHFCSTtFQUNJLGtCQUFBO0FDbkJSO0FFaERFO0VId0VFO0lBQ0ksVUFBQTtJQUNBLGdCQUFBO0VDcEJOO0FBQ0Y7QUVuRUU7RUg0RkU7SUFDSSxrQ0FBQTtFQ3RCTjtFRHdCTTtJQUNJLGVBQUE7RUN0QlY7O0VEMEJFO0lBQ0ksY0FBQTtFQ3ZCTjtBQUNGO0FFekVFO0VIcUdFO0lBQ0ksZ0JBQUE7SUFDQSxrQkFBQTtJQUVBLFlBQUE7SUFDQSxzQkFBQTtJQUNBLGdCQUFBO0lBQ0EsaUJBQUE7SUFDQSxnQkFBQTtFQzFCTjtFRDZCTTtJQUNJLGVBQUE7RUMzQlY7RUQ4Qk07SUFDSSxXQUFBO0VDNUJWO0VEK0JNO0lBQ0ksYUFBQTtFQzdCVjtFRGdDTTtJQUNJLFlBQUE7RUM5QlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1uYXYvYXJ0aXN0LW5hdi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuXG4uYXJ0aXN0X19uYXYge1xuICAgIHBhZGRpbmc6IDBlbSAyZW0gMWVtO1xuXG4gICAgaGVpZ2h0OiA0ZW07XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFNEU0RTQ7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGhlaWdodDogNzB2aDtcbiAgICB9XG5cbiAgICAmX19tb2JpbGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcbiAgICAgICAgXG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFxuICAgICZfX21haW4ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyZW07XG5cbiAgICAgICAgLmFydGlzdF9fbmF2X19idXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2hpc3Rvcnkge1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgIH1cbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICAgIH1cblxuICAgICZfX3BsYXlsaXN0IHtcbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEOEQ4RDg7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICBwYWRkaW5nOiA4cHggMWVtO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjZTRlNGU0O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWxlY3RfX2l0ZW0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfSAgIFxufVxuXG5AaW5jbHVkZSBndC14cyB7XG4gICAgLmFydGlzdF9fbmF2X19jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAzMTBweDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGx0LW1kIHtcblxuICAgIC5hcnRpc3RfX25hdiB7XG4gICAgICAgIGJveC1zaGFkb3c6IDNweCAxNHB4IDE2cHggOHB4ICMwMDA7XG5cbiAgICAgICAgJl9fY29udGFpbmVyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMGVtIDAgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hcnRpc3RfX25hdl9fY29udGVudCB7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgZ3QtbWQge1xuXG4gICAgLmFydGlzdF9fbmF2IHtcbiAgICAgICAgcGFkZGluZzogMWVtIDFlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwZW07XG5cblxuICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luOiAwZW0gMCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fY29udGVudCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX21vYmlsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG4gICAgXG4gICAgfVxuXG59IiwiLmFydGlzdF9fbmF2IHtcbiAgcGFkZGluZzogMGVtIDJlbSAxZW07XG4gIGhlaWdodDogNGVtO1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI0U0RTRFNDtcbn1cbi5hcnRpc3RfX25hdi5hY3RpdmUge1xuICBoZWlnaHQ6IDcwdmg7XG59XG4uYXJ0aXN0X19uYXZfX21vYmlsZSB7XG4gIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xufVxuLmFydGlzdF9fbmF2X19tb2JpbGUgYnV0dG9uIHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBtYXJnaW4tdG9wOiAxZW07XG59XG4uYXJ0aXN0X19uYXZfX21vYmlsZSBidXR0b24gc3BhbiB7XG4gIGZsb2F0OiBsZWZ0O1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fbmF2X19tb2JpbGUgYnV0dG9uIGkge1xuICBtYXJnaW4tbGVmdDogMWVtO1xufVxuLmFydGlzdF9fbmF2X19jb250ZW50IGgyIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG59XG4uYXJ0aXN0X19uYXZfX21haW4ge1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG59XG4uYXJ0aXN0X19uYXZfX21haW4gLmFydGlzdF9fbmF2X19idXR0b24ge1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgZm9udC1zaXplOiAxZW07XG59XG4uYXJ0aXN0X19uYXZfX2hpc3Rvcnkge1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG59XG4uYXJ0aXN0X19uYXZfX2hpc3RvcnkgaDMge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG4uYXJ0aXN0X19uYXZfX3BsYXlsaXN0IGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6ICNEOEQ4RDg7XG4gIHBhZGRpbmc6IDhweCAxZW07XG4gIGZvbnQtc2l6ZTogMWVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fbmF2X19wbGF5bGlzdCBidXR0b24gaSB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLmFydGlzdF9fbmF2X19idXR0b24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIHBhZGRpbmc6IDhweCAxZW07XG4gIGJvcmRlcjogMnB4IHNvbGlkICNlNGU0ZTQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fbmF2X19idXR0b24uYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogI0E5RTVBQztcbiAgYm9yZGVyOiAycHggc29saWQgI0E5RTVBQztcbn1cbi5hcnRpc3RfX25hdiAuc2VsZWN0X19pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAuYXJ0aXN0X19uYXZfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA2MCU7XG4gICAgbWF4LXdpZHRoOiAzMTBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgLmFydGlzdF9fbmF2IHtcbiAgICBib3gtc2hhZG93OiAzcHggMTRweCAxNnB4IDhweCAjMDAwO1xuICB9XG4gIC5hcnRpc3RfX25hdl9fY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDBlbSAwIDA7XG4gIH1cblxuICAuYXJ0aXN0X19uYXZfX2NvbnRlbnQge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAuYXJ0aXN0X19uYXYge1xuICAgIHBhZGRpbmc6IDFlbSAxZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgbWFyZ2luLWxlZnQ6IDBlbTtcbiAgfVxuICAuYXJ0aXN0X19uYXZfX2NvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwZW0gMCAwO1xuICB9XG4gIC5hcnRpc3RfX25hdl9fY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmFydGlzdF9fbmF2X19tb2JpbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLmFydGlzdF9fbmF2LmFjdGl2ZSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59IiwiXG4kcHJpbWFyeS1mb250OiAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmO1xuJHNlY29uZGFyeS1mb250OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSSc7XG5cbi8vIENvbG9yc1xuXG4kcHJpbWFyeS1jb2xvcjogI0E5RTVBQzsiLCIkdGFibGV0LXdpZHRoOiA3NjhweDtcbiRkZXNrdG9wLXdpZHRoOiAxMDI0cHg7XG5cbkBtaXhpbiB0YWJsZXQge1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skdGFibGV0LXdpZHRofSkgYW5kIChtYXgtd2lkdGg6ICN7JGRlc2t0b3Atd2lkdGggLSAxcHh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skZGVza3RvcC13aWR0aH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbHQtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC14cyB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufSJdfQ== */"); /***/ }), /***/ "./src/app/components/artist/artist-nav/artist-nav.component.ts": /*!**********************************************************************!*\ !*** ./src/app/components/artist/artist-nav/artist-nav.component.ts ***! \**********************************************************************/ /*! exports provided: ArtistNavComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArtistNavComponent", function() { return ArtistNavComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); let ArtistNavComponent = class ArtistNavComponent { constructor() { this.updateHistory = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.createPlaylist = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.historyList = []; this.selectedHistory = { name: 'Current', value: 'songs' }; } ngOnInit() { console.log(this.navState); this.historyList = [...this.navState.historyList]; this.selectedHistory = this.historyList[0]; } getRadioValue(data) { const navState = { listType: this.navState.listType, selectedHistory: this.selectedHistory, historyList: this.navState.historyList }; this.updateHistory.next(navState); } updateArtistTrack(type) { const navState = { listType: type, selectedHistory: this.selectedHistory, historyList: this.navState.historyList }; this.updateHistory.next(navState); } emitCreatePlaylist() { this.createPlaylist.next(true); } }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], ArtistNavComponent.prototype, "navState", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], ArtistNavComponent.prototype, "updateHistory", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], ArtistNavComponent.prototype, "createPlaylist", void 0); ArtistNavComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-artist-nav', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./artist-nav.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-nav/artist-nav.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./artist-nav.component.scss */ "./src/app/components/artist/artist-nav/artist-nav.component.scss")).default] }) ], ArtistNavComponent); /***/ }), /***/ "./src/app/components/artist/track-card/track-card.component.scss": /*!************************************************************************!*\ !*** ./src/app/components/artist/track-card/track-card.component.scss ***! \************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".artist__card {\n width: 100%;\n min-width: 200px;\n height: 150px;\n position: relative;\n overflow: hidden;\n border-radius: 5px;\n box-shadow: 5px 5px 4px 4px rgba(0, 0, 0, 0.5);\n color: white;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n.artist__card img {\n position: absolute;\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n}\n.artist__card.active {\n height: 200px;\n}\n.artist__card.active .artist__card__info {\n height: 100%;\n}\n.artist__card span {\n margin-top: 2px;\n}\n.artist__card__info {\n height: 60px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n position: absolute;\n width: 100%;\n background: rgba(0, 0, 0, 0.55);\n border-radius: 5px;\n bottom: 0;\n box-sizing: border-box;\n padding: 1rem 0.5rem;\n font-size: 1.2rem;\n}\n.artist__card__info--secondary, .artist__card__info--primary {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n margin-left: 1rem;\n}\n.artist__card__info--primary {\n font-size: 1.2em;\n margin-bottom: 0.5rem;\n}\n.artist__card__external {\n color: white;\n cursor: pointer;\n}\n.artist__card button {\n margin-top: 1em;\n background: transparent;\n width: 125px;\n text-align: center;\n font-size: 12px;\n color: #fff;\n display: block;\n border-radius: 25px;\n font-weight: 700;\n margin: 1em auto 0;\n border: 2px solid #A9E5AC;\n padding: 1em;\n cursor: pointer;\n}\n@media (min-width: 768px) and (max-width: 1023px) {\n .artist__card {\n height: 150px;\n width: 200px;\n margin-bottom: 1em;\n }\n .artist__card.active {\n height: 150px;\n }\n}\n@media (min-width: 1024px) {\n .artist__card {\n height: 170px;\n width: 220px;\n margin-bottom: 1em;\n }\n .artist__card__info {\n font-size: 1rem;\n }\n .artist__card.active {\n height: 170px;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L3RyYWNrLWNhcmQvdHJhY2stY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvdHJhY2stY2FyZC90cmFjay1jYXJkLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvc2Nzcy9fbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsOENBQUE7RUFDQSxZQUFBO0VBQ0EsaURBQUE7QUNGSjtBRElJO0VBQ0ksa0JBQUE7RUFDQSxvQkFBQTtLQUFBLGlCQUFBO0VBQ0EsV0FBQTtBQ0ZSO0FES0k7RUFDSSxhQUFBO0FDSFI7QURLUTtFQUNJLFlBQUE7QUNIWjtBRE9JO0VBQ0ksZUFBQTtBQ0xSO0FEUUk7RUFDSSxZQUFBO0VBQ0EsaURBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSwrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLHNCQUFBO0VBQ0Esb0JBQUE7RUFDQSxpQkFBQTtBQ05SO0FEUVE7RUFDSSxpREFBQTtFQUNBLGlCQUFBO0FDTlo7QURTUTtFQUNJLGdCQUFBO0VBQ0EscUJBQUE7QUNQWjtBRFlJO0VBQ0ksWUFBQTtFQUNBLGVBQUE7QUNWUjtBRGFJO0VBQ0ksZUFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLFdBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBQ1hSO0FDM0RFO0VGMkVFO0lBQ0ksYUFBQTtJQUNBLFlBQUE7SUFDQSxrQkFBQTtFQ1pOO0VEYU07SUFDSSxhQUFBO0VDWFY7QUFDRjtBQ2hFRTtFRmlGRTtJQUNJLGFBQUE7SUFDQSxZQUFBO0lBQ0Esa0JBQUE7RUNkTjtFRGdCTTtJQUNJLGVBQUE7RUNkVjtFRGlCTTtJQUNJLGFBQUE7RUNmVjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvdHJhY2stY2FyZC90cmFjay1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5hcnRpc3RfX2NhcmQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgYm94LXNoYWRvdzogNXB4IDVweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuXG4gICAgaW1nIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBoZWlnaHQ6IDIwMHB4O1xuICAgICAgICBcbiAgICAgICAgLmFydGlzdF9fY2FyZF9faW5mbyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIH1cbiAgICBcbiAgICAmX19pbmZvIHtcbiAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuMSwuMjUsMSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjU1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3R0b206IDA7ICBcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgIFxuICAgICAgICBwYWRkaW5nOiAxcmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG5cbiAgICAgICAgJi0tc2Vjb25kYXJ5LCAmLS1wcmltYXJ5IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tcHJpbWFyeSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19leHRlcm5hbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAxMjVweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgbWFyZ2luOiAxZW0gYXV0byAwO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG5AaW5jbHVkZSB0YWJsZXQge1xuICAgIC5hcnRpc3RfX2NhcmQge1xuICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5AaW5jbHVkZSBkZXNrdG9wIHtcbiAgICAuYXJ0aXN0X19jYXJkIHtcbiAgICAgICAgaGVpZ2h0OiAxNzBweDtcbiAgICAgICAgd2lkdGg6IDIyMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG5cbiAgICAgICAgJl9faW5mbyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDE3MHB4O1xuICAgICAgICB9XG4gICAgfVxuXG59IiwiLmFydGlzdF9fY2FyZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IDE1MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogNXB4IDVweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgY29sb3I6IHdoaXRlO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmFydGlzdF9fY2FyZCBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbn1cbi5hcnRpc3RfX2NhcmQuYWN0aXZlIHtcbiAgaGVpZ2h0OiAyMDBweDtcbn1cbi5hcnRpc3RfX2NhcmQuYWN0aXZlIC5hcnRpc3RfX2NhcmRfX2luZm8ge1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uYXJ0aXN0X19jYXJkIHNwYW4ge1xuICBtYXJnaW4tdG9wOiAycHg7XG59XG4uYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJvdHRvbTogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMXJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xufVxuLmFydGlzdF9fY2FyZF9faW5mby0tc2Vjb25kYXJ5LCAuYXJ0aXN0X19jYXJkX19pbmZvLS1wcmltYXJ5IHtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG59XG4uYXJ0aXN0X19jYXJkX19pbmZvLS1wcmltYXJ5IHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLmFydGlzdF9fY2FyZF9fZXh0ZXJuYWwge1xuICBjb2xvcjogd2hpdGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hcnRpc3RfX2NhcmQgYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgd2lkdGg6IDEyNXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDFlbSBhdXRvIDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNBOUU1QUM7XG4gIHBhZGRpbmc6IDFlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmFydGlzdF9fY2FyZCB7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICB9XG4gIC5hcnRpc3RfX2NhcmQuYWN0aXZlIHtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5hcnRpc3RfX2NhcmQge1xuICAgIGhlaWdodDogMTcwcHg7XG4gICAgd2lkdGg6IDIyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgfVxuICAuYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgLmFydGlzdF9fY2FyZC5hY3RpdmUge1xuICAgIGhlaWdodDogMTcwcHg7XG4gIH1cbn0iLCIkdGFibGV0LXdpZHRoOiA3NjhweDtcbiRkZXNrdG9wLXdpZHRoOiAxMDI0cHg7XG5cbkBtaXhpbiB0YWJsZXQge1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skdGFibGV0LXdpZHRofSkgYW5kIChtYXgtd2lkdGg6ICN7JGRlc2t0b3Atd2lkdGggLSAxcHh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skZGVza3RvcC13aWR0aH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbHQtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC14cyB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufSJdfQ== */"); /***/ }), /***/ "./src/app/components/artist/track-card/track-card.component.ts": /*!**********************************************************************!*\ !*** ./src/app/components/artist/track-card/track-card.component.ts ***! \**********************************************************************/ /*! exports provided: TrackCardComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TrackCardComponent", function() { return TrackCardComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/browserCheck */ "./src/app/services/browserCheck.ts"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); let TrackCardComponent = class TrackCardComponent { constructor(browserCheck, sanitizer) { this.browserCheck = browserCheck; this.sanitizer = sanitizer; this.activeView = false; } onClick(btn) { if (this.browserCheck.isDevice) { this.activeView = !this.activeView; } } onMouseEnter(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = true; } } onMouseLeave(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = false; } } ngOnInit() { } }; TrackCardComponent.ctorParameters = () => [ { type: src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__["DomSanitizer"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], TrackCardComponent.prototype, "track", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], TrackCardComponent.prototype, "i", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('touchend', ['$event.target']) ], TrackCardComponent.prototype, "onClick", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseenter', ['$event.target']) ], TrackCardComponent.prototype, "onMouseEnter", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseleave', ['$event.target']) ], TrackCardComponent.prototype, "onMouseLeave", null); TrackCardComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-track-card', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./track-card.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/track-card/track-card.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./track-card.component.scss */ "./src/app/components/artist/track-card/track-card.component.scss")).default] }) ], TrackCardComponent); /***/ }), /***/ "./src/app/components/footer/footer.component.scss": /*!*********************************************************!*\ !*** ./src/app/components/footer/footer.component.scss ***! \*********************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("footer {\n min-height: 100px;\n padding: 3em;\n background-color: rgba(0, 0, 0, 0.8);\n color: white;\n bottom: 0;\n}\nfooter a {\n color: white;\n text-decoration: none;\n margin-bottom: 1em;\n}\nfooter a:hover, footer a:focus {\n text-decoration: underline;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0NBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtBQ0NKO0FEQ0k7RUFDSSxZQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtBQ0NSO0FEQ1E7RUFDSSwwQkFBQTtBQ0NaIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiZm9vdGVyIHtcbiAgICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgICBwYWRkaW5nOiAzZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjgpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3R0b206IDA7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcblxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufSIsImZvb3RlciB7XG4gIG1pbi1oZWlnaHQ6IDEwMHB4O1xuICBwYWRkaW5nOiAzZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3R0b206IDA7XG59XG5mb290ZXIgYSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5mb290ZXIgYTpob3ZlciwgZm9vdGVyIGE6Zm9jdXMge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn0iXX0= */"); /***/ }), /***/ "./src/app/components/footer/footer.component.ts": /*!*******************************************************!*\ !*** ./src/app/components/footer/footer.component.ts ***! \*******************************************************/ /*! exports provided: FooterComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FooterComponent", function() { return FooterComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); let FooterComponent = class FooterComponent { constructor(router) { this.router = router; } ngOnInit() { } }; FooterComponent.ctorParameters = () => [ { type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], FooterComponent.prototype, "login", void 0); FooterComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-footer', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./footer.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/footer/footer.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./footer.component.scss */ "./src/app/components/footer/footer.component.scss")).default] }) ], FooterComponent); /***/ }), /***/ "./src/app/components/home/home.component.scss": /*!*****************************************************!*\ !*** ./src/app/components/home/home.component.scss ***! \*****************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".app {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n padding: 0 1em;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvaG9tZS9ob21lLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGlEQUFBO0VBQ0EsY0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ob21lL2hvbWUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYXBwIHtcbiAgICB0cmFuc2l0aW9uOiAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuMSwuMjUsMSk7XG4gICAgcGFkZGluZzogMCAxZW07XG59IiwiLmFwcCB7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG4gIHBhZGRpbmc6IDAgMWVtO1xufSJdfQ== */"); /***/ }), /***/ "./src/app/components/home/home.component.ts": /*!***************************************************!*\ !*** ./src/app/components/home/home.component.ts ***! \***************************************************/ /*! exports provided: HomeComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HomeComponent", function() { return HomeComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var _services_infoService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var src_app_services_obscurifyService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! src/app/services/obscurifyService */ "./src/app/services/obscurifyService.ts"); let HomeComponent = class HomeComponent { constructor(tokenSvc, cookieService, router, infoSvc, authService, obscurifyService) { this.tokenSvc = tokenSvc; this.cookieService = cookieService; this.router = router; this.infoSvc = infoSvc; this.authService = authService; this.obscurifyService = obscurifyService; this.stream = null; this.bgColor = '#A9E5AC'; } setColor(val) { switch (val) { case 1: this.bgColor = '#A9E5AC'; break; case 2: this.bgColor = '#FFA69E'; break; case 3: this.bgColor = 'rgba(0,0,0,0.9)'; break; case 4: this.bgColor = '#FFF'; break; case 5: this.bgColor = '#759398'; break; } } ngOnInit() { const cookie = this.cookieService.get('spotifyResponse'); if (cookie || this.tokenSvc.oAuthToken.spotifyToken) { this.tokenSvc.setAuthTokenCache(cookie); this.authService.authorized(); } else { this.tokenSvc.clearToken(); this.router.navigate(['login']); } const stream = this.tokenSvc.authTokens.pipe((x) => { return this.infoSvc.fetchUserInfo(); }); stream.subscribe((user) => { }); this.infoSvc.getUserStream().subscribe((user) => { if (user.userInfo && user.allTimeObscurifyScore) { this.obscurifyService.getObscurifyData(user.userInfo.country, user.allTimeObscurifyScore, user.recentObscurifyScore).subscribe((data) => { console.log('obscurify data', data); }); } }); } }; HomeComponent.ctorParameters = () => [ { type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }, { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] }, { type: _services_infoService__WEBPACK_IMPORTED_MODULE_5__["InfoService"] }, { type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: src_app_services_obscurifyService__WEBPACK_IMPORTED_MODULE_6__["default"] } ]; HomeComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-home', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./home.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/home/home.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./home.component.scss */ "./src/app/components/home/home.component.scss")).default] }) ], HomeComponent); /***/ }), /***/ "./src/app/components/intro/intro.component.scss": /*!*******************************************************!*\ !*** ./src/app/components/intro/intro.component.scss ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("nav {\n max-width: 1024px;\n padding: 1em 1em;\n margin: 0 auto;\n color: rgba(0, 0, 0, 0.5);\n}\nnav i {\n font-size: 2em;\n cursor: pointer;\n}\nnav button {\n background: none;\n border: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 1em;\n font-weight: bold;\n}\nnav button i {\n margin-left: 5px;\n}\n.welcome {\n width: 100%;\n font-size: 2em;\n padding-top: 140px;\n text-align: center;\n}\n.welcome span {\n color: #A9E5AC;\n}\n.profile {\n width: 100%;\n padding: 140px 0;\n text-align: center;\n}\n.profile__image {\n width: 100px;\n height: 100px;\n margin: 0 auto 2em;\n background: #e5e5e5;\n border-radius: 50%;\n}\n.profile__image img {\n width: 100%;\n height: auto;\n border-radius: 50%;\n}\n.profile__header {\n max-width: 600px;\n text-align: center;\n font-size: 2em;\n}\n@media (min-width: 1024px) {\n .profile__image {\n width: 200px;\n height: 200px;\n }\n .profile__header {\n font-size: 3em;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvaW50cm8vaW50cm8uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvaW50cm8vaW50cm8uY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL192YXJpYWJsZXMuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFFQSx5QkFBQTtBQ0hKO0FES0k7RUFDSSxjQUFBO0VBQ0EsZUFBQTtBQ0hSO0FETUk7RUFDSSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtBQ0pSO0FES1E7RUFDSSxnQkFBQTtBQ0haO0FEUUE7RUFDSSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7QUNMSjtBRE1JO0VBQ0ksY0U3QlE7QUR5QmhCO0FEUUE7RUFDSSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtBQ0xKO0FET0k7RUFDSSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ0xSO0FET1E7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0FDTFo7QURTSTtFQUNJLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0FDUFI7QUU1Q0U7RUgyRE07SUFDSSxZQUFBO0lBQ0EsYUFBQTtFQ1hWO0VEY007SUFDSSxjQUFBO0VDWlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW50cm8vaW50cm8uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAnbWl4aW5zJztcblxubmF2IHtcbiAgICBtYXgtd2lkdGg6IDEwMjRweDtcbiAgICBwYWRkaW5nOiAxZW0gMWVtO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcblxuICAgIGkge1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi53ZWxjb21lIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBwYWRkaW5nLXRvcDogMTQwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHNwYW4ge1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29sb3I7XG4gICAgfVxufVxuXG4ucHJvZmlsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTQwcHggMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmX19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTVlNWU1O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faGVhZGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICB9XG59XG5cblxuQGluY2x1ZGUgZGVza3RvcCB7XG5cbiAgICAucHJvZmlsZSB7XG4gICAgICAgICZfX2ltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmX19oZWFkZXIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIH1cbiAgICB9XG59IiwibmF2IHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIHBhZGRpbmc6IDFlbSAxZW07XG4gIG1hcmdpbjogMCBhdXRvO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxubmF2IGkge1xuICBmb250LXNpemU6IDJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxubmF2IGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxubmF2IGJ1dHRvbiBpIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLndlbGNvbWUge1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1zaXplOiAyZW07XG4gIHBhZGRpbmctdG9wOiAxNDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLndlbGNvbWUgc3BhbiB7XG4gIGNvbG9yOiAjQTlFNUFDO1xufVxuXG4ucHJvZmlsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxNDBweCAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ucHJvZmlsZV9faW1hZ2Uge1xuICB3aWR0aDogMTAwcHg7XG4gIGhlaWdodDogMTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvIDJlbTtcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuLnByb2ZpbGVfX2ltYWdlIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cbi5wcm9maWxlX19oZWFkZXIge1xuICBtYXgtd2lkdGg6IDYwMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5wcm9maWxlX19pbWFnZSB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGhlaWdodDogMjAwcHg7XG4gIH1cbiAgLnByb2ZpbGVfX2hlYWRlciB7XG4gICAgZm9udC1zaXplOiAzZW07XG4gIH1cbn0iLCJcbiRwcmltYXJ5LWZvbnQ6ICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7XG4kc2Vjb25kYXJ5LWZvbnQ6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJztcblxuLy8gQ29sb3JzXG5cbiRwcmltYXJ5LWNvbG9yOiAjQTlFNUFDOyIsIiR0YWJsZXQtd2lkdGg6IDc2OHB4O1xuJGRlc2t0b3Atd2lkdGg6IDEwMjRweDtcblxuQG1peGluIHRhYmxldCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyR0YWJsZXQtd2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skZGVza3RvcC13aWR0aCAtIDFweH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRofSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBsdC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk1OXB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LXhzIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59Il19 */"); /***/ }), /***/ "./src/app/components/intro/intro.component.ts": /*!*****************************************************!*\ !*** ./src/app/components/intro/intro.component.ts ***! \*****************************************************/ /*! exports provided: IntroComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IntroComponent", function() { return IntroComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! src/app/services/infoService */ "./src/app/services/infoService.ts"); let IntroComponent = class IntroComponent { constructor(element, intersectionObserverService, infoSvc) { this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); } updateAppBackgroundColor() { this.appColor.emit(4); } ngOnInit() { this.infoSvc.getUserStream().subscribe((user) => { console.log('user', user); if (user.userInfo) { this.userImage = user.userInfo.images[0].url; this.userName = user.userInfo.display_name; } }); } ngAfterViewInit() { this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.70 }); this.intersectionObserverSubs = this.intersectionObserverService .getSubject() .subscribe(el => { if (el.isIntersecting) { this.updateAppBackgroundColor(); } }); } }; IntroComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__["InfoService"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], IntroComponent.prototype, "appColor", void 0); IntroComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-intro', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./intro.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/intro/intro.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./intro.component.scss */ "./src/app/components/intro/intro.component.scss")).default] }) ], IntroComponent); /***/ }), /***/ "./src/app/components/login/login.component.scss": /*!*******************************************************!*\ !*** ./src/app/components/login/login.component.scss ***! \*******************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ("main {\n background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url('login-background.jpg');\n background-size: cover;\n background-position: center;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: white;\n}\nmain .login__container {\n width: 320px;\n}\nmain h1 {\n color: #fff;\n font-size: 48px;\n color: #FFFFFF;\n letter-spacing: 1.92px;\n text-align: center;\n top: 118px;\n font-weight: bold;\n margin-bottom: 1rem;\n}\nmain h1 span {\n color: #65D26E;\n font-size: inherit;\n letter-spacing: 1.92px;\n text-align: center;\n font-weight: bold;\n}\nmain p {\n margin-bottom: 3rem;\n}\nmain .login {\n width: 258px;\n height: 70px;\n margin: 0 auto;\n border-radius: 2px;\n background: #65d26e;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\nmain .login:hover .login__btn, main .login :focus .login__btn {\n opacity: 0.7;\n}\nmain .login__btn {\n font-size: 16px;\n color: #FFFFFF;\n letter-spacing: 1.49px;\n text-align: center;\n text-decoration: none;\n font-weight: bold;\n background: transparent;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnR0FBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFFQSxZQUFBO0FDQUo7QURFSTtFQUNJLFlBQUE7QUNBUjtBREdJO0VBQ0ksV0FBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FDRFI7QURFUTtFQUNFLGNBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtBQ0FWO0FESU07RUFDSSxtQkFBQTtBQ0ZWO0FES0k7RUFDSSxZQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0FDSFI7QURNWTtFQUNJLFlBQUE7QUNKaEI7QURTSTtFQUNJLGVBQUE7RUFDQSxjQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSx1QkFBQTtBQ1BSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIm1haW4ge1xuICAgIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHJnYmEoMCwgMCwgMCwgMC44KSwgcmdiYSgwLCAwLCAwLCAwLjgpKSwgdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYXBwL2xvZ2luLWJhY2tncm91bmQuanBnKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAubG9naW5fX2NvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAzMjBweDtcbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMS45MnB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHRvcDogMTE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBjb2xvcjogIzY1RDI2RTtcbiAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuOTJweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gICAgICB9XG5cbiAgICAubG9naW4ge1xuICAgICAgICB3aWR0aDogMjU4cHg7XG4gICAgICAgIGhlaWdodDogNzBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgYmFja2dyb3VuZDogIzY1ZDI2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgXG4gICAgICAgICY6aG92ZXIsOmZvY3VzIHtcbiAgICAgICAgICAgIC5sb2dpbl9fYnRuIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5sb2dpbl9fYnRuIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuNDlweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbiIsIm1haW4ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQocmdiYSgwLCAwLCAwLCAwLjgpLCByZ2JhKDAsIDAsIDAsIDAuOCkpLCB1cmwoLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9hcHAvbG9naW4tYmFja2dyb3VuZC5qcGcpO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG59XG5tYWluIC5sb2dpbl9fY29udGFpbmVyIHtcbiAgd2lkdGg6IDMyMHB4O1xufVxubWFpbiBoMSB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDQ4cHg7XG4gIGNvbG9yOiAjRkZGRkZGO1xuICBsZXR0ZXItc3BhY2luZzogMS45MnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRvcDogMTE4cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxubWFpbiBoMSBzcGFuIHtcbiAgY29sb3I6ICM2NUQyNkU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuOTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbm1haW4gcCB7XG4gIG1hcmdpbi1ib3R0b206IDNyZW07XG59XG5tYWluIC5sb2dpbiB7XG4gIHdpZHRoOiAyNThweDtcbiAgaGVpZ2h0OiA3MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kOiAjNjVkMjZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxubWFpbiAubG9naW46aG92ZXIgLmxvZ2luX19idG4sIG1haW4gLmxvZ2luIDpmb2N1cyAubG9naW5fX2J0biB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbm1haW4gLmxvZ2luX19idG4ge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjRkZGRkZGO1xuICBsZXR0ZXItc3BhY2luZzogMS40OXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufSJdfQ== */"); /***/ }), /***/ "./src/app/components/login/login.component.ts": /*!*****************************************************!*\ !*** ./src/app/components/login/login.component.ts ***! \*****************************************************/ /*! exports provided: LoginComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginComponent", function() { return LoginComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _services_spotifyAuth_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../services/spotifyAuth/index */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); let LoginComponent = class LoginComponent { constructor(authService, tokenSvc, router, cookieService) { this.authService = authService; this.tokenSvc = tokenSvc; this.router = router; this.cookieService = cookieService; } ngOnInit() { if (!!this.tokenSvc.oAuthToken.spotifyToken) { this.router.navigate(['home']); } } login() { const cookie = this.cookieService.get('spotifyResponse'); if (cookie) { // this.tokenSvc.setAuthTokenCache(cookie); this.authService.authorized(); } else { this.authService.authorize(); } } }; LoginComponent.ctorParameters = () => [ { type: _services_spotifyAuth_index__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: _services_spotifyAuth_index__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"] }, { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_4__["CookieService"] } ]; LoginComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-login', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./login.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login/login.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./login.component.scss */ "./src/app/components/login/login.component.scss")).default] }) ], LoginComponent); /***/ }), /***/ "./src/app/components/moods-graph/moods-graph.component.scss": /*!*******************************************************************!*\ !*** ./src/app/components/moods-graph/moods-graph.component.scss ***! \*******************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.moods-graph {\n max-width: 620px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n padding: 5rem 0;\n opacity: 0;\n transform: translateY(100px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n align-items: flex-start;\n}\n\n.moods-graph.show {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.moods-graph__container {\n margin-top: 1em;\n}\n\n.moods-graph__container--right {\n align-self: flex-end;\n}\n\n.moods-graph__container--right h3 {\n text-align: right;\n}\n\n.moods-graph__content {\n margin-top: 2em;\n}\n\n.moods-graph__content h3 {\n font-size: 36px;\n}\n\n.moods-graph__card {\n padding: 1em;\n background-color: white;\n margin-top: 1em;\n display: flex;\n border-radius: 5px;\n}\n\n.moods-graph__card--reverse {\n flex-direction: row-reverse;\n}\n\n.moods-graph__card__header {\n font-size: 24px;\n margin-bottom: 0.5em;\n}\n\n.moods-graph__card__paragraph {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\";\n font-weight: normal;\n}\n\n.moods-graph__card__container {\n width: 50%;\n}\n\n.equalizer-container {\n height: 100px;\n display: flex;\n align-items: center;\n position: relative;\n justify-content: center;\n}\n\n.equalizer-container .bar {\n width: 8px;\n min-height: 10px;\n margin-right: 2px;\n transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);\n will-change: transform;\n transform: scaleY(1);\n position: relative;\n}\n\n.equalizer-container.level-one .bar:nth-child(0) {\n background-color: #81D6E3;\n -webkit-animation: grow-one0 2134ms alternate infinite;\n animation: grow-one0 2134ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(1) {\n background-color: #81D6E3;\n -webkit-animation: grow-one1 2198ms alternate infinite;\n animation: grow-one1 2198ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(2) {\n background-color: #81D6E3;\n -webkit-animation: grow-one2 1651ms alternate infinite;\n animation: grow-one2 1651ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(3) {\n background-color: #81D6E3;\n -webkit-animation: grow-one3 1676ms alternate infinite;\n animation: grow-one3 1676ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(4) {\n background-color: #81D6E3;\n -webkit-animation: grow-one4 1690ms alternate infinite;\n animation: grow-one4 1690ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(5) {\n background-color: #81D6E3;\n -webkit-animation: grow-one5 2043ms alternate infinite;\n animation: grow-one5 2043ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(6) {\n background-color: #81D6E3;\n -webkit-animation: grow-one6 1642ms alternate infinite;\n animation: grow-one6 1642ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(7) {\n background-color: #81D6E3;\n -webkit-animation: grow-one7 1833ms alternate infinite;\n animation: grow-one7 1833ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(8) {\n background-color: #81D6E3;\n -webkit-animation: grow-one8 1861ms alternate infinite;\n animation: grow-one8 1861ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(9) {\n background-color: #81D6E3;\n -webkit-animation: grow-one9 1945ms alternate infinite;\n animation: grow-one9 1945ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(10) {\n background-color: #81D6E3;\n -webkit-animation: grow-one10 1960ms alternate infinite;\n animation: grow-one10 1960ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(11) {\n background-color: #81D6E3;\n -webkit-animation: grow-one11 2068ms alternate infinite;\n animation: grow-one11 2068ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(12) {\n background-color: #81D6E3;\n -webkit-animation: grow-one12 1708ms alternate infinite;\n animation: grow-one12 1708ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-two0 1611ms alternate infinite;\n animation: grow-two0 1611ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-two1 1844ms alternate infinite;\n animation: grow-two1 1844ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-two2 1744ms alternate infinite;\n animation: grow-two2 1744ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-two3 2052ms alternate infinite;\n animation: grow-two3 2052ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-two4 2139ms alternate infinite;\n animation: grow-two4 2139ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-two5 1506ms alternate infinite;\n animation: grow-two5 1506ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-two6 2051ms alternate infinite;\n animation: grow-two6 2051ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-two7 2113ms alternate infinite;\n animation: grow-two7 2113ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-two8 1621ms alternate infinite;\n animation: grow-two8 1621ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two8 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two8 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-two9 1681ms alternate infinite;\n animation: grow-two9 1681ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-two10 1964ms alternate infinite;\n animation: grow-two10 1964ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-two11 1671ms alternate infinite;\n animation: grow-two11 1671ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-two12 1830ms alternate infinite;\n animation: grow-two12 1830ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-three0 2088ms alternate infinite;\n animation: grow-three0 2088ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-three1 2053ms alternate infinite;\n animation: grow-three1 2053ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-three2 1922ms alternate infinite;\n animation: grow-three2 1922ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-three3 2158ms alternate infinite;\n animation: grow-three3 2158ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three3 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three3 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-three4 1733ms alternate infinite;\n animation: grow-three4 1733ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-three5 1710ms alternate infinite;\n animation: grow-three5 1710ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-three6 1600ms alternate infinite;\n animation: grow-three6 1600ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-three7 1665ms alternate infinite;\n animation: grow-three7 1665ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three7 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three7 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-three8 1633ms alternate infinite;\n animation: grow-three8 1633ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-three9 1731ms alternate infinite;\n animation: grow-three9 1731ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-three10 2051ms alternate infinite;\n animation: grow-three10 2051ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-three11 2098ms alternate infinite;\n animation: grow-three11 2098ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three11 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three11 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-three12 2175ms alternate infinite;\n animation: grow-three12 2175ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-four0 1901ms alternate infinite;\n animation: grow-four0 1901ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four0 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four0 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-four1 2010ms alternate infinite;\n animation: grow-four1 2010ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-four1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-four2 2187ms alternate infinite;\n animation: grow-four2 2187ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-four3 1836ms alternate infinite;\n animation: grow-four3 1836ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-four4 1554ms alternate infinite;\n animation: grow-four4 1554ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-four4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-four5 1700ms alternate infinite;\n animation: grow-four5 1700ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-four5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-four6 1750ms alternate infinite;\n animation: grow-four6 1750ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four6 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four6 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-four7 1561ms alternate infinite;\n animation: grow-four7 1561ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four7 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four7 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-four8 1648ms alternate infinite;\n animation: grow-four8 1648ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-four9 1551ms alternate infinite;\n animation: grow-four9 1551ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four9 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four9 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-four10 1716ms alternate infinite;\n animation: grow-four10 1716ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four10 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four10 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-four11 2099ms alternate infinite;\n animation: grow-four11 2099ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-four12 1779ms alternate infinite;\n animation: grow-four12 1779ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-four12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-five0 1967ms alternate infinite;\n animation: grow-five0 1967ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-five1 1680ms alternate infinite;\n animation: grow-five1 1680ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five1 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-five1 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-five2 1849ms alternate infinite;\n animation: grow-five2 1849ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-five3 1960ms alternate infinite;\n animation: grow-five3 1960ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-five4 1926ms alternate infinite;\n animation: grow-five4 1926ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-five5 1819ms alternate infinite;\n animation: grow-five5 1819ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-five6 1536ms alternate infinite;\n animation: grow-five6 1536ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-five7 2028ms alternate infinite;\n animation: grow-five7 2028ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-five7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-five8 1967ms alternate infinite;\n animation: grow-five8 1967ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-five8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-five9 1609ms alternate infinite;\n animation: grow-five9 1609ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-five10 1720ms alternate infinite;\n animation: grow-five10 1720ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five10 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five10 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-five11 1916ms alternate infinite;\n animation: grow-five11 1916ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five11 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-five11 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-five12 1964ms alternate infinite;\n animation: grow-five12 1964ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-five12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-six0 1640ms alternate infinite;\n animation: grow-six0 1640ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six0 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-six0 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-six1 1807ms alternate infinite;\n animation: grow-six1 1807ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-six1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-six2 1576ms alternate infinite;\n animation: grow-six2 1576ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-six2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-six3 1695ms alternate infinite;\n animation: grow-six3 1695ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six3 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-six3 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-six4 2167ms alternate infinite;\n animation: grow-six4 2167ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-six4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-six5 2184ms alternate infinite;\n animation: grow-six5 2184ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six5 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-six5 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-six6 1993ms alternate infinite;\n animation: grow-six6 1993ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-six6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-six7 2157ms alternate infinite;\n animation: grow-six7 2157ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-six7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-six8 1606ms alternate infinite;\n animation: grow-six8 1606ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-six8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-six9 2055ms alternate infinite;\n animation: grow-six9 2055ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-six9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-six10 1541ms alternate infinite;\n animation: grow-six10 1541ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six10 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-six10 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-six11 1878ms alternate infinite;\n animation: grow-six11 1878ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-six11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-six12 1727ms alternate infinite;\n animation: grow-six12 1727ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-six12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-seven0 1895ms alternate infinite;\n animation: grow-seven0 1895ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-seven0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-seven1 1584ms alternate infinite;\n animation: grow-seven1 1584ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-seven2 1784ms alternate infinite;\n animation: grow-seven2 1784ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven2 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-seven2 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-seven3 2162ms alternate infinite;\n animation: grow-seven3 2162ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-seven3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-seven4 1930ms alternate infinite;\n animation: grow-seven4 1930ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven4 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven4 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-seven5 1578ms alternate infinite;\n animation: grow-seven5 1578ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-seven5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-seven6 1561ms alternate infinite;\n animation: grow-seven6 1561ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-seven6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-seven7 1685ms alternate infinite;\n animation: grow-seven7 1685ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-seven7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-seven8 1815ms alternate infinite;\n animation: grow-seven8 1815ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-seven9 1935ms alternate infinite;\n animation: grow-seven9 1935ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-seven9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-seven10 1599ms alternate infinite;\n animation: grow-seven10 1599ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven10 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n@keyframes grow-seven10 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-seven11 2083ms alternate infinite;\n animation: grow-seven11 2083ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-seven11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-seven12 1979ms alternate infinite;\n animation: grow-seven12 1979ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven12 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven12 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-eight0 2147ms alternate infinite;\n animation: grow-eight0 2147ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight0 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-eight0 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-eight1 2087ms alternate infinite;\n animation: grow-eight1 2087ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight1 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-eight1 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-eight2 2145ms alternate infinite;\n animation: grow-eight2 2145ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight2 {\n 0% {\n transform: scaleY(7);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-eight2 {\n 0% {\n transform: scaleY(7);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-eight3 1850ms alternate infinite;\n animation: grow-eight3 1850ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-eight3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-eight4 1737ms alternate infinite;\n animation: grow-eight4 1737ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-eight5 2088ms alternate infinite;\n animation: grow-eight5 2088ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight5 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(9);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-eight5 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(9);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-eight6 2033ms alternate infinite;\n animation: grow-eight6 2033ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n@keyframes grow-eight6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-eight7 2008ms alternate infinite;\n animation: grow-eight7 2008ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight7 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-eight7 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-eight8 1853ms alternate infinite;\n animation: grow-eight8 1853ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-eight9 1586ms alternate infinite;\n animation: grow-eight9 1586ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n@keyframes grow-eight9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-eight10 2005ms alternate infinite;\n animation: grow-eight10 2005ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight10 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight10 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-eight11 2095ms alternate infinite;\n animation: grow-eight11 2095ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(9);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-eight11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(9);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-eight12 1975ms alternate infinite;\n animation: grow-eight12 1975ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight12 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight12 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-nine0 1921ms alternate infinite;\n animation: grow-nine0 1921ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine0 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-nine0 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-nine1 2185ms alternate infinite;\n animation: grow-nine1 2185ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-nine2 1736ms alternate infinite;\n animation: grow-nine2 1736ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-nine2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-nine3 1989ms alternate infinite;\n animation: grow-nine3 1989ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-nine3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-nine4 1673ms alternate infinite;\n animation: grow-nine4 1673ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-nine4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-nine5 1825ms alternate infinite;\n animation: grow-nine5 1825ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine5 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(10);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-nine5 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(10);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-nine6 1887ms alternate infinite;\n animation: grow-nine6 1887ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine6 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine6 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-nine7 2107ms alternate infinite;\n animation: grow-nine7 2107ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine7 {\n 0% {\n transform: scaleY(10);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(10);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine7 {\n 0% {\n transform: scaleY(10);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(10);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-nine8 2015ms alternate infinite;\n animation: grow-nine8 2015ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine8 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine8 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-nine9 1937ms alternate infinite;\n animation: grow-nine9 1937ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine9 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n@keyframes grow-nine9 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-nine10 1928ms alternate infinite;\n animation: grow-nine10 1928ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(10);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(10);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-nine11 1913ms alternate infinite;\n animation: grow-nine11 1913ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine11 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-nine11 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-nine12 1649ms alternate infinite;\n animation: grow-nine12 1649ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine12 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(10);\n }\n}\n\n@keyframes grow-nine12 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(10);\n }\n}\n\n@media (min-width: 1024px) {\n .moods-graph__container {\n width: 65%;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbW9vZHMtZ3JhcGgvbW9vZHMtZ3JhcGguY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9jb21wb25lbnRzL21vb2RzLWdyYXBoL21vb2RzLWdyYXBoLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLGNBQUE7RUFDQSw4QkFBQTtFQUNBLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsU0FBQTtBQ0RSOztBQ0RBO0VBQ0ksZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7RUFDQSw0QkFBQTtFQUNBLGlEQUFBO0VBQ0EsdUJBQUE7QURJSjs7QUNGSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRElSOztBQ0FJO0VBQ0ksZUFBQTtBREVSOztBQ0NJO0VBQ0ksb0JBQUE7QURDUjs7QUNDUTtFQUNJLGlCQUFBO0FEQ1o7O0FDR0k7RUFDSSxlQUFBO0FERFI7O0FDR1E7RUFDSSxlQUFBO0FERFo7O0FDS0k7RUFDSSxZQUFBO0VBQ0EsdUJBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0FESFI7O0FDTUk7RUFDSSwyQkFBQTtBREpSOztBQ09JO0VBQ0ksZUFBQTtFQUNBLG9CQUFBO0FETFI7O0FDUUk7RUFDSSwwREMxRFM7RUQyRFQsbUJBQUE7QUROUjs7QUNTSTtFQUNJLFVBQUE7QURQUjs7QUNZQTtF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Q0Usb0JBQUE7RUQ2eElsQjtFQzl4SWdCO0lBQ0Usb0JBQUE7RURneUlsQjtFQ2p5SWdCO0lBQ0Usb0JBQUE7RURteUlsQjtFQ3B5SWdCO0lBQ0UscUJBQUE7RURzeUlsQjtBQUNGOztBQzF5SVU7RUFFUTtJQUNFLG9CQUFBO0VEd3dJbEI7RUN6d0lnQjtJQUNFLG9CQUFBO0VEMndJbEI7RUM1d0lnQjtJQUNFLG9CQUFBO0VEOHdJbEI7RUMvd0lnQjtJQUNFLG9CQUFBO0VEaXhJbEI7RUNseElnQjtJQUNFLG9CQUFBO0VEb3hJbEI7RUNyeElnQjtJQUNFLG9CQUFBO0VEdXhJbEI7RUN4eElnQjtJQUNFLG9CQUFBO0VEMHhJbEI7RUMzeElnQjtJQUNFLG9CQUFBO0VENnhJbEI7RUM5eElnQjtJQUNFLG9CQUFBO0VEZ3lJbEI7RUNqeUlnQjtJQUNFLG9CQUFBO0VEbXlJbEI7RUNweUlnQjtJQUNFLHFCQUFBO0VEc3lJbEI7QUFDRjs7QUdyaEpFO0VGd1BNO0lBQ0ksVUFBQTtFRGl5SVY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbW9vZHMtZ3JhcGgvbW9vZHMtZ3JhcGguY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZGVyIHtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDhweCBibGFjayBzb2xpZDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIuaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgcGFkZGluZy1ib3R0b206IDAuMmVtO1xuICBtYXJnaW46IDA7XG59XG5cbi5tb29kcy1ncmFwaCB7XG4gIG1heC13aWR0aDogNjIwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiA1cmVtIDA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuLm1vb2RzLWdyYXBoLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5tb29kcy1ncmFwaF9fY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuLm1vb2RzLWdyYXBoX19jb250YWluZXItLXJpZ2h0IHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG59XG4ubW9vZHMtZ3JhcGhfX2NvbnRhaW5lci0tcmlnaHQgaDMge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5tb29kcy1ncmFwaF9fY29udGVudCB7XG4gIG1hcmdpbi10b3A6IDJlbTtcbn1cbi5tb29kcy1ncmFwaF9fY29udGVudCBoMyB7XG4gIGZvbnQtc2l6ZTogMzZweDtcbn1cbi5tb29kcy1ncmFwaF9fY2FyZCB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuLm1vb2RzLWdyYXBoX19jYXJkLS1yZXZlcnNlIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuLm1vb2RzLWdyYXBoX19jYXJkX19oZWFkZXIge1xuICBmb250LXNpemU6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xufVxuLm1vb2RzLWdyYXBoX19jYXJkX19wYXJhZ3JhcGgge1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG4ubW9vZHMtZ3JhcGhfX2NhcmRfX2NvbnRhaW5lciB7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi5lcXVhbGl6ZXItY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyIC5iYXIge1xuICB3aWR0aDogOHB4O1xuICBtaW4taGVpZ2h0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lMCAyMTM0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmUxIDIxOThtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTIgMTY1MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmUyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lMyAxNjc2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTMge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmU0IDE2OTBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lNCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTUgMjA0M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmU1IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lNiAxNjQybXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTYge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmU3IDE4MzNtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lNyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTggMTg2MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmU4IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lOSAxOTQ1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lMTAgMTk2MG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmUxMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmUxMSAyMDY4bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTExIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoMTIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTEyIDE3MDhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCgwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d28wIDE2MTFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzEgMTg0NG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d28xIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvMiAxNzQ0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCgzKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d28zIDIwNTJtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvMyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzQgMjEzOW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d280IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoNSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvNSAxNTA2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCg2KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d282IDIwNTFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvNiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDcpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzcgMjExM21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d283IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoOCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvOCAxNjIxbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzgge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCg5KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d285IDE2ODFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvOSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDEwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d28xMCAxOTY0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoMTEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzExIDE2NzFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvMTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCgxMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvMTIgMTgzMG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d28xMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWUwIDIwODhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWUwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTEgMjA1M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlMiAxOTIybXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWUzIDIxNThtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWUzIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTQgMTczM21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTQge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlNSAxNzEwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlNSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWU2IDE2MDBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWU2IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTcgMTY2NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTcge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlOCAxNjMzbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlOCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWU5IDE3MzFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWU5IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWUxMCAyMDUxbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlMTAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTExIDIwOThtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWUxMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoMTIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlMTIgMjE3NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTEyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXIwIDE5MDFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjEgMjAxMG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCgyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyMiAyMTg3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXIyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXIzIDE4MzZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjMge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjQgMTU1NG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyNCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyNSAxNzAwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXI1IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDYpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXI2IDE3NTBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjYge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoNykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjcgMTU2MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyNyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCg4KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyOCAxNjQ4bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXI4IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDkpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXI5IDE1NTFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoMTApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXIxMCAxNzE2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXIxMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCgxMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjExIDIwOTltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjExIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyMTIgMTc3OW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTAgMTk2N21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlMSAxNjgwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmUxIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmUyIDE4NDltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTMgMTk2MG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlMyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlNCAxOTI2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmU0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmU1IDE4MTltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTYgMTUzNm1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlNiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlNyAyMDI4bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmU3IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmU4IDE5NjdtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTgge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTkgMTYwOW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlOSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTEwIDE3MjBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlMTEgMTkxNm1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlMTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoMTIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmUxMiAxOTY0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmUxMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDAgMTY0MG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXgwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4MSAxODA3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCgyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXgyIDE1NzZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4MiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDMgMTY5NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXgzIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4NCAyMTY3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDQge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXg1IDIxODRtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4NSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDYpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDYgMTk5M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXg2IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoNykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4NyAyMTU3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDcge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCg4KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXg4IDE2MDZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4OCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDkpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDkgMjA1NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXg5IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoMTApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDEwIDE1NDFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4MTAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCgxMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4MTEgMTg3OG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXgxMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXgxMiAxNzI3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDEyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCgwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjAgMTg5NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuMSAxNTg0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW4yIDE3ODRtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW4yIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCgzKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjMgMjE2Mm1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjMge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuNCAxOTMwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuNCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoNSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW41IDE1NzhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW41IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCg2KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjYgMTU2MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjYge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDcpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuNyAxNjg1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuNyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoOCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW44IDE4MTVtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW44IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCg5KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjkgMTkzNW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDEwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjEwIDE1OTltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW4xMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoMTEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuMTEgMjA4M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjExIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCgxMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW4xMiAxOTc5bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0MCAyMTQ3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0MCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQxIDIwODdtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQxIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCgyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDIgMjE0NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0MyAxODUwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0MyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQ0IDE3MzdtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQ0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDUgMjA4OG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDYpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0NiAyMDMzbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0NiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoNykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQ3IDIwMDhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQ3IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCg4KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDggMTg1M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDgge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDkpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0OSAxNTg2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0OSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoMTApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0MTAgMjAwNW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCgxMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQxMSAyMDk1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0MTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDEyIDE5NzVtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQxMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCgwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMCAxOTIxbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmUwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMSAyMTg1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmUxIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1uaW5lIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LW5pbmUyIDE3MzZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctbmluZTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTMgMTk4OW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lMyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lNCAxNjczbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmU0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lNSAxODI1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmU1IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTYgMTg4N21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lNiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lNyAyMTA3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmU3IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoOCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTggMjAxNW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lOCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTkgMTkzN21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lOSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTEwIDE5MjhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctbmluZTEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxMCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxMCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxMCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1uaW5lIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMTEgMTkxM21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lMTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1uaW5lIC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMTIgMTY0OW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm1vb2RzLWdyYXBoX19jb250YWluZXIge1xuICAgIHdpZHRoOiA2NSU7XG4gIH1cbn0iLCJAaW1wb3J0ICdjb21wb25lbnRzL2hlYWRlcic7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndmFyaWFibGVzJztcblxuXG4ubW9vZHMtZ3JhcGgge1xuICAgIG1heC13aWR0aDogNjIwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IDVyZW0gMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgJi5zaG93IHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG5cbiAgICB9XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgfVxuXG4gICAgJl9fY29udGFpbmVyLS1yaWdodCB7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICAgICAgXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NhcmQge1xuICAgICAgICBwYWRkaW5nOiAxZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG5cbiAgICAmX19jYXJkLS1yZXZlcnNlIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgIH1cblxuICAgICZfX2NhcmRfX2hlYWRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gICAgfVxuXG4gICAgJl9fY2FyZF9fcGFyYWdyYXBoIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRzZWNvbmRhcnktZm9udDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB9XG5cbiAgICAmX19jYXJkX19jb250YWluZXIge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgIH1cbn1cblxuXG4uZXF1YWxpemVyLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiAxMDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIC5iYXIge1xuICAgICAgd2lkdGg6IDhweDtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xuICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4kYmFyczogMTI7XG4kbXVsdGlwbGllcjogMTAwIC8gJGJhcnM7XG5cbi5lcXVhbGl6ZXItY29udGFpbmVyIHtcblxuICAgICYubGV2ZWwtb25lIHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7O1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctb25lI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LW9uZSN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoI3tyYW5kb20oMSl9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxldmVsLXR3byB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRiYXJzIHtcbiAgICAgICAgICAuYmFyOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICAgICAkc2F0dXJhdGlvbjogMTAwIC0gKCgkaSArIDEpICogJG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDE0MCwgNzMlLCA0MiUsIDEpO1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctdHdvI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBrZXlmcmFtZXMgZ3Jvdy10d28jeyRpfSB7XG4gICAgICAgICAgICAgIEBmb3IgJGogZnJvbSAwIHRocm91Z2ggMTAge1xuICAgICAgICAgICAgICAgICAgI3skaiAqIDEwfSUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgje3JhbmRvbSgyKX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubGV2ZWwtdGhyZWUge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkYmFycyB7XG4gICAgICAgICAgLmJhcjpudGgtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgICAgICAgJHNhdHVyYXRpb246IDEwMCAtICgoJGkgKyAxKSAqICRtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgxNDAsIDczJSwgNDIlLCAxKTtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBncm93LXRocmVlI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBrZXlmcmFtZXMgZ3Jvdy10aHJlZSN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKCN7cmFuZG9tKDMpfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5sZXZlbC1mb3VyIHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTQwLCA3MyUsIDQyJSwgMSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZ3Jvdy1mb3VyI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBrZXlmcmFtZXMgZ3Jvdy1mb3VyI3skaX0ge1xuICAgICAgICAgICAgICBAZm9yICRqIGZyb20gMCB0aHJvdWdoIDEwIHtcbiAgICAgICAgICAgICAgICAgICN7JGogKiAxMH0lIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoI3tyYW5kb20oNCl9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxldmVsLWZpdmUge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkYmFycyB7XG4gICAgICAgICAgLmJhcjpudGgtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgICAgICAgJHNhdHVyYXRpb246IDEwMCAtICgoJGkgKyAxKSAqICRtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgxNDAsIDczJSwgNDIlLCAxKTtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBncm93LWZpdmUjeyRpfSAje3JhbmRvbSg3MDApICsgMTUwMH1tcyBhbHRlcm5hdGUgaW5maW5pdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LWZpdmUjeyRpfSB7XG4gICAgICAgICAgICAgIEBmb3IgJGogZnJvbSAwIHRocm91Z2ggMTAge1xuICAgICAgICAgICAgICAgICAgI3skaiAqIDEwfSUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgje3JhbmRvbSg1KX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubGV2ZWwtc2l4IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTQwLCA3MyUsIDQyJSwgMSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZ3Jvdy1zaXgjeyRpfSAje3JhbmRvbSg3MDApICsgMTUwMH1tcyBhbHRlcm5hdGUgaW5maW5pdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LXNpeCN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKCN7cmFuZG9tKDYpfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5sZXZlbC1zZXZlbiB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRiYXJzIHtcbiAgICAgICAgICAuYmFyOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICAgICAkc2F0dXJhdGlvbjogMTAwIC0gKCgkaSArIDEpICogJG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDE0MCwgNzMlLCA0MiUsIDEpO1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctc2V2ZW4jeyRpfSAje3JhbmRvbSg3MDApICsgMTUwMH1tcyBhbHRlcm5hdGUgaW5maW5pdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LXNldmVuI3skaX0ge1xuICAgICAgICAgICAgICBAZm9yICRqIGZyb20gMCB0aHJvdWdoIDEwIHtcbiAgICAgICAgICAgICAgICAgICN7JGogKiAxMH0lIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoI3tyYW5kb20oOCl9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxldmVsLWVpZ2h0IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTQwLCA3MyUsIDQyJSwgMSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZ3Jvdy1laWdodCN7JGl9ICN7cmFuZG9tKDcwMCkgKyAxNTAwfW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAa2V5ZnJhbWVzIGdyb3ctZWlnaHQjeyRpfSB7XG4gICAgICAgICAgICAgIEBmb3IgJGogZnJvbSAwIHRocm91Z2ggMTAge1xuICAgICAgICAgICAgICAgICAgI3skaiAqIDEwfSUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgje3JhbmRvbSg5KX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubGV2ZWwtbmluZSB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRiYXJzIHtcbiAgICAgICAgICAuYmFyOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICAgICAkc2F0dXJhdGlvbjogMTAwIC0gKCgkaSArIDEpICogJG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDE0MCwgNzMlLCA0MiUsIDEpO1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctbmluZSN7JGl9ICN7cmFuZG9tKDcwMCkgKyAxNTAwfW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAa2V5ZnJhbWVzIGdyb3ctbmluZSN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKCN7cmFuZG9tKDEwKX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5AaW5jbHVkZSBkZXNrdG9wIHtcbiAgICAubW9vZHMtZ3JhcGgge1xuICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDY1JTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCJcbiRwcmltYXJ5LWZvbnQ6ICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7XG4kc2Vjb25kYXJ5LWZvbnQ6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJztcblxuLy8gQ29sb3JzXG5cbiRwcmltYXJ5LWNvbG9yOiAjQTlFNUFDOyIsIiR0YWJsZXQtd2lkdGg6IDc2OHB4O1xuJGRlc2t0b3Atd2lkdGg6IDEwMjRweDtcblxuQG1peGluIHRhYmxldCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyR0YWJsZXQtd2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skZGVza3RvcC13aWR0aCAtIDFweH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRofSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBsdC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk1OXB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LXhzIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59Il19 */"); /***/ }), /***/ "./src/app/components/moods-graph/moods-graph.component.ts": /*!*****************************************************************!*\ !*** ./src/app/components/moods-graph/moods-graph.component.ts ***! \*****************************************************************/ /*! exports provided: MoodsGraphComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MoodsGraphComponent", function() { return MoodsGraphComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); let MoodsGraphComponent = class MoodsGraphComponent { constructor(element, intersectionObserverService) { this.element = element; this.intersectionObserverService = intersectionObserverService; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.show = false; } updateAppBackgroundColor() { this.appColor.emit(2); } ngOnInit() { } ngAfterViewInit() { this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.30 }); this.intersectionObserverSubs = this.intersectionObserverService .getSubject() .subscribe(el => { if (el.isIntersecting) { this.updateAppBackgroundColor(); this.show = true; } else { this.show = false; } }); } }; MoodsGraphComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], MoodsGraphComponent.prototype, "appColor", void 0); MoodsGraphComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-moods-graph', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./moods-graph.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/moods-graph/moods-graph.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./moods-graph.component.scss */ "./src/app/components/moods-graph/moods-graph.component.scss")).default] }) ], MoodsGraphComponent); /***/ }), /***/ "./src/app/components/obscurity-graph/obscurity-graph.component.scss": /*!***************************************************************************!*\ !*** ./src/app/components/obscurity-graph/obscurity-graph.component.scss ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".obscurity__graph {\n margin-top: 2em;\n border-radius: 5px;\n width: 100%;\n padding: 2em 1em;\n display: flex;\n justify-content: space-around;\n align-items: flex-end;\n background-color: #A9E5AC;\n box-shadow: 22px 21px 1px 0 rgba(0, 0, 0, 0.5);\n}\n.obscurity__graph__container {\n display: flex;\n justify-content: space-around;\n align-items: flex-end;\n width: 100%;\n height: 300px;\n}\n.obscurity__graph__container .obscurity__avg-bar {\n will-change: height, opacity;\n background: #FFFBFA;\n box-shadow: 12px 12px 1px 0 rgba(0, 0, 0, 0.25);\n width: 60px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n margin-bottom: 5rem;\n}\n.obscurity__graph__container .obscurity__avg-bar.active .bar-value {\n opacity: 1;\n visibility: visible;\n}\n.obscurity__graph__container .obscurity__avg-bar .bar-value {\n color: grey;\n opacity: 0;\n transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) 1s;\n}\n.obscurity__graph__container .obscurity__avg-bar .bar-title {\n position: absolute;\n bottom: -5em;\n font-weight: bold;\n font-size: 14px;\n color: #000000;\n letter-spacing: 0.87px;\n text-align: center;\n height: 35px;\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(1) {\n transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(2) {\n transition: all 1s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(3) {\n transition: all 1.5s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(4) {\n transition: all 2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__info {\n text-align: left;\n padding: 0 2em;\n margin-top: 1em;\n font-size: 0.8rem;\n}\n@media (min-width: 1024px) {\n .obscurity__graph {\n max-width: 600px;\n box-sizing: border-box;\n }\n .obscurity__graph__info {\n font-size: 1rem;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LWdyYXBoL29ic2N1cml0eS1ncmFwaC5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL29ic2N1cml0eS1ncmFwaC9vYnNjdXJpdHktZ3JhcGguY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGFBQUE7RUFDQSw2QkFBQTtFQUNBLHFCQUFBO0VBQ0EseUJDTFk7RURNWiw4Q0FBQTtBRUZKO0FGSUk7RUFDSSxhQUFBO0VBQ0EsNkJBQUE7RUFDQSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0FFRlI7QUZJUTtFQUVJLDRCQUFBO0VBRUEsbUJBQUE7RUFDQSwrQ0FBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7QUVKWjtBRk9nQjtFQUNJLFVBQUE7RUFDQSxtQkFBQTtBRUxwQjtBRlVZO0VBQ0ksV0FBQTtFQUNBLFVBQUE7RUFDQSw0REFBQTtBRVJoQjtBRllZO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0FFVmhCO0FGa0JRO0VBQ0kseURBQUE7QUVoQlo7QUZlUTtFQUNJLHVEQUFBO0FFYlo7QUZZUTtFQUNJLHlEQUFBO0FFVlo7QUZTUTtFQUNJLHVEQUFBO0FFUFo7QUZhSTtFQUNJLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtBRVhSO0FDdkRFO0VIdUVFO0lBQ0ksZ0JBQUE7SUFDQSxzQkFBQTtFRVpOO0VGY007SUFDSSxlQUFBO0VFWlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LWdyYXBoL29ic2N1cml0eS1ncmFwaC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuXG4ub2JzY3VyaXR5X19ncmFwaCB7XG4gICAgbWFyZ2luLXRvcDogMmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyZW0gMWVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICAgIGJveC1zaGFkb3c6IDIycHggMjFweCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAzMDBweDtcbiAgICBcbiAgICAgICAgLm9ic2N1cml0eV9fYXZnLWJhciB7XG4gICAgICAgICAgICAvLyBoZWlnaHQ6IDI2M3B4O1xuICAgICAgICAgICAgd2lsbC1jaGFuZ2U6IGhlaWdodCwgb3BhY2l0eTtcbiAgICBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkZCRkE7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAxMnB4IDEycHggMXB4IDAgcmdiYSgwLDAsMCwwLjI1KTtcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVyZW07XG4gICAgXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgLmJhci12YWx1ZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLmJhci12YWx1ZXtcbiAgICAgICAgICAgICAgICBjb2xvcjogZ3JleTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpIDFzO1xuICAgIFxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLmJhci10aXRsZSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTVlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMDAwMDA7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuODdweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgICR0aW1lTGlzdDogMC41LCAxLCAxLjUsIDI7XG4gICAgICAgICRjb3VudDogMTtcbiAgICBcbiAgICAgICAgQGVhY2ggJHRpbWUgaW4gJHRpbWVMaXN0IHtcbiAgICAgICAgLm9ic2N1cml0eS1hdmctYmFyOm50aC1jaGlsZCgjeyRjb3VudH0pIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAjeyR0aW1lfXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xuICAgICAgICB9XG4gICAgICAgICRjb3VudDogJGNvdW50ICsgMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2luZm8ge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwYWRkaW5nOiAwIDJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGRlc2t0b3Age1xuICAgIC5vYnNjdXJpdHlfX2dyYXBoe1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICZfX2luZm8ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxufSIsIlxuJHByaW1hcnktZm9udDogJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjtcbiRzZWNvbmRhcnktZm9udDogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknO1xuXG4vLyBDb2xvcnNcblxuJHByaW1hcnktY29sb3I6ICNBOUU1QUM7IiwiLm9ic2N1cml0eV9fZ3JhcGgge1xuICBtYXJnaW4tdG9wOiAyZW07XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDJlbSAxZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNBOUU1QUM7XG4gIGJveC1zaGFkb3c6IDIycHggMjFweCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG4ub2JzY3VyaXR5X19ncmFwaF9fY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzAwcHg7XG59XG4ub2JzY3VyaXR5X19ncmFwaF9fY29udGFpbmVyIC5vYnNjdXJpdHlfX2F2Zy1iYXIge1xuICB3aWxsLWNoYW5nZTogaGVpZ2h0LCBvcGFjaXR5O1xuICBiYWNrZ3JvdW5kOiAjRkZGQkZBO1xuICBib3gtc2hhZG93OiAxMnB4IDEycHggMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgd2lkdGg6IDYwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDVyZW07XG59XG4ub2JzY3VyaXR5X19ncmFwaF9fY29udGFpbmVyIC5vYnNjdXJpdHlfX2F2Zy1iYXIuYWN0aXZlIC5iYXItdmFsdWUge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5X19hdmctYmFyIC5iYXItdmFsdWUge1xuICBjb2xvcjogZ3JleTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpIDFzO1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5X19hdmctYmFyIC5iYXItdGl0bGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjg3cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiAzNXB4O1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5LWF2Zy1iYXI6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5LWF2Zy1iYXI6bnRoLWNoaWxkKDIpIHtcbiAgdHJhbnNpdGlvbjogYWxsIDFzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcbn1cbi5vYnNjdXJpdHlfX2dyYXBoX19jb250YWluZXIgLm9ic2N1cml0eS1hdmctYmFyOm50aC1jaGlsZCgzKSB7XG4gIHRyYW5zaXRpb246IGFsbCAxLjVzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcbn1cbi5vYnNjdXJpdHlfX2dyYXBoX19jb250YWluZXIgLm9ic2N1cml0eS1hdmctYmFyOm50aC1jaGlsZCg0KSB7XG4gIHRyYW5zaXRpb246IGFsbCAycyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XG59XG4ub2JzY3VyaXR5X19ncmFwaF9faW5mbyB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHBhZGRpbmc6IDAgMmVtO1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5vYnNjdXJpdHlfX2dyYXBoIHtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLm9ic2N1cml0eV9fZ3JhcGhfX2luZm8ge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgfVxufSIsIiR0YWJsZXQtd2lkdGg6IDc2OHB4O1xuJGRlc2t0b3Atd2lkdGg6IDEwMjRweDtcblxuQG1peGluIHRhYmxldCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyR0YWJsZXQtd2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skZGVza3RvcC13aWR0aCAtIDFweH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRofSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBsdC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk1OXB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LXhzIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59Il19 */"); /***/ }), /***/ "./src/app/components/obscurity-graph/obscurity-graph.component.ts": /*!*************************************************************************!*\ !*** ./src/app/components/obscurity-graph/obscurity-graph.component.ts ***! \*************************************************************************/ /*! exports provided: ObscurityGraphComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObscurityGraphComponent", function() { return ObscurityGraphComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); let ObscurityGraphComponent = class ObscurityGraphComponent { constructor(renderer, el, sanitizer) { // events.subscribe('graphInit', () => { this.renderer = renderer; this.el = el; this.sanitizer = sanitizer; this.imageURL = ''; this.country = ''; this.doneLoading = false; this.barActive = false; // this.setGraph(); // }); } }; ObscurityGraphComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["Renderer2"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_2__["DomSanitizer"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])() ], ObscurityGraphComponent.prototype, "data", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('globalAvgBar', { static: true }) ], ObscurityGraphComponent.prototype, "globalBar", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('countryAvgBar', { static: true }) ], ObscurityGraphComponent.prototype, "countryBar", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('allTimeBar', { static: true }) ], ObscurityGraphComponent.prototype, "allTimeBar", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('recentBar', { static: true }) ], ObscurityGraphComponent.prototype, "recentBar", void 0); ObscurityGraphComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-obscurity-graph', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./obscurity-graph.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-graph/obscurity-graph.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./obscurity-graph.component.scss */ "./src/app/components/obscurity-graph/obscurity-graph.component.scss")).default] }) ], ObscurityGraphComponent); /***/ }), /***/ "./src/app/components/obscurity-rating/obscurity-rating.component.scss": /*!*****************************************************************************!*\ !*** ./src/app/components/obscurity-rating/obscurity-rating.component.scss ***! \*****************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.obscurity {\n max-width: 1024px;\n margin: 0 auto;\n padding: 2rem 0px;\n transform: translateY(100px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n opacity: 0;\n transform: translateY(100px);\n}\n\n.obscurity.show {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.header__title {\n color: white;\n border-bottom: 5px #A9E5AC solid;\n}\n\n.percentile {\n display: flex;\n justify-content: flex-start;\n margin-top: 3em;\n}\n\n.percentile h2 {\n font-size: 4em;\n text-align: center;\n}\n\n.percentile p {\n font-size: 1em;\n margin-top: 1em;\n}\n\n.percentile__card {\n border-radius: 5px;\n background-color: #fff;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n padding: 2em 2em 5em;\n box-shadow: 22px 21px 4px 4px rgba(0, 0, 0, 0.5);\n}\n\n@media (min-width: 1024px) {\n .percentile__card {\n padding: 2em 2em 5em;\n min-width: 600px;\n box-sizing: border-box;\n }\n .percentile h2 {\n font-size: 8em;\n }\n .percentile p {\n font-size: 1em;\n margin-top: 1em;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LXJhdGluZy9vYnNjdXJpdHktcmF0aW5nLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvY29tcG9uZW50cy9vYnNjdXJpdHktcmF0aW5nL29ic2N1cml0eS1yYXRpbmcuY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLGNBQUE7RUFDQSw4QkFBQTtFQUNBLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsU0FBQTtBQ0RSOztBQ0ZBO0VBQ0ksaUJBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7RUFDQSw0QkFBQTtFQUNBLGlEQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0FES0o7O0FDSEk7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURLUjs7QUNGQTtFQUNJLFlBQUE7RUFDQSxnQ0FBQTtBREtKOztBQ0ZBO0VBQ0ksYUFBQTtFQUNBLDJCQUFBO0VBQ0EsZUFBQTtBREtKOztBQ0hJO0VBQ0UsY0FBQTtFQUNBLGtCQUFBO0FES047O0FDRkk7RUFDSSxjQUFBO0VBQ0EsZUFBQTtBRElSOztBQ0RJO0VBQ0Usa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSwyQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RUFDQSxnREFBQTtBREdOOztBRXhDRTtFRDhDTTtJQUNJLG9CQUFBO0lBQ0EsZ0JBQUE7SUFDQSxzQkFBQTtFREZWO0VDTU07SUFDRSxjQUFBO0VESlI7RUNPTTtJQUNJLGNBQUE7SUFDQSxlQUFBO0VETFY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LXJhdGluZy9vYnNjdXJpdHktcmF0aW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhlYWRlciB7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IC4yZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59IiwiLmhlYWRlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDNlbTtcbiAgYm9yZGVyLWJvdHRvbTogOHB4IGJsYWNrIHNvbGlkO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwLjJlbTtcbiAgbWFyZ2luOiAwO1xufVxuXG4ub2JzY3VyaXR5IHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAycmVtIDBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcbn1cbi5vYnNjdXJpdHkuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuXG4uaGVhZGVyX190aXRsZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLWJvdHRvbTogNXB4ICNBOUU1QUMgc29saWQ7XG59XG5cbi5wZXJjZW50aWxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtYXJnaW4tdG9wOiAzZW07XG59XG4ucGVyY2VudGlsZSBoMiB7XG4gIGZvbnQtc2l6ZTogNGVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ucGVyY2VudGlsZSBwIHtcbiAgZm9udC1zaXplOiAxZW07XG4gIG1hcmdpbi10b3A6IDFlbTtcbn1cbi5wZXJjZW50aWxlX19jYXJkIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIHBhZGRpbmc6IDJlbSAyZW0gNWVtO1xuICBib3gtc2hhZG93OiAyMnB4IDIxcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnBlcmNlbnRpbGVfX2NhcmQge1xuICAgIHBhZGRpbmc6IDJlbSAyZW0gNWVtO1xuICAgIG1pbi13aWR0aDogNjAwcHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAucGVyY2VudGlsZSBoMiB7XG4gICAgZm9udC1zaXplOiA4ZW07XG4gIH1cbiAgLnBlcmNlbnRpbGUgcCB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICB9XG59IiwiQGltcG9ydCAnY29tcG9uZW50cy9oZWFkZXInO1xuQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5vYnNjdXJpdHkge1xuICAgIG1heC13aWR0aDogMTAyNHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDJyZW0gMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcblxuICAgICYuc2hvdyB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIH1cbiAgfVxuLmhlYWRlcl9fdGl0bGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tOiA1cHggJHByaW1hcnktY29sb3Igc29saWQ7XG59XG5cbi5wZXJjZW50aWxlIHtcbiAgICBkaXNwbGF5OmZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIG1hcmdpbi10b3A6IDNlbTtcblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogNGVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgfVxuICBcbiAgICAmX19jYXJkIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgcGFkZGluZzogMmVtIDJlbSA1ZW07XG4gICAgICBib3gtc2hhZG93OiAyMnB4IDIxcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgfVxuICB9XG5cblxuQGluY2x1ZGUgZGVza3RvcCB7XG5cbiAgICAucGVyY2VudGlsZSB7XG5cbiAgICAgICAgJl9fY2FyZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAyZW0gMmVtIDVlbTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogNjAwcHg7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB9XG5cbiAgICAgICAgICBcbiAgICAgICAgaDIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogOGVtO1xuICAgICAgICB9XG4gICAgICBcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgfVxuICAgIH0gXG5cbn1cbiAgIiwiJHRhYmxldC13aWR0aDogNzY4cHg7XG4kZGVza3RvcC13aWR0aDogMTAyNHB4O1xuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHRhYmxldC13aWR0aH0pIGFuZCAobWF4LXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRoIC0gMXB4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JGRlc2t0b3Atd2lkdGh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGx0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QteHMge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn0iXX0= */"); /***/ }), /***/ "./src/app/components/obscurity-rating/obscurity-rating.component.ts": /*!***************************************************************************!*\ !*** ./src/app/components/obscurity-rating/obscurity-rating.component.ts ***! \***************************************************************************/ /*! exports provided: ObscurityRatingComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObscurityRatingComponent", function() { return ObscurityRatingComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); let ObscurityRatingComponent = class ObscurityRatingComponent { constructor(element, intersectionObserverService) { this.element = element; this.intersectionObserverService = intersectionObserverService; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.show = false; } updateAppBackgroundColor(val) { if (val) { this.appColor.emit(3); } else { this.appColor.emit(2); } } ngOnInit() { } ngAfterViewInit() { this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.20 }); this.intersectionObserverSubs = this.intersectionObserverService .getSubject() .subscribe(el => { if (el.isIntersecting) { this.updateAppBackgroundColor(true); this.show = true; } else { this.show = false; } if (el.isVisible) { this.updateAppBackgroundColor(false); } }); } }; ObscurityRatingComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], ObscurityRatingComponent.prototype, "appColor", void 0); ObscurityRatingComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-obscurity-rating', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./obscurity-rating.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-rating/obscurity-rating.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./obscurity-rating.component.scss */ "./src/app/components/obscurity-rating/obscurity-rating.component.scss")).default] }) ], ObscurityRatingComponent); /***/ }), /***/ "./src/app/components/recommendations/recommendations.component.scss": /*!***************************************************************************!*\ !*** ./src/app/components/recommendations/recommendations.component.scss ***! \***************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.recommendations {\n max-width: 620px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n padding: 5rem 0;\n position: relative;\n height: 100%;\n min-height: 620px;\n opacity: 0;\n transform: translateY(100px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.recommendations.show {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.recommendations .header {\n color: white;\n}\n\n.recommendations .header__title {\n border-color: white;\n font-size: 2.3em;\n}\n\n.recommendations__content {\n position: relative;\n}\n\n.recommendations__container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n border-radius: 25px 25px 0 0;\n overflow: hidden;\n box-sizing: content-box;\n padding-top: 80px;\n min-height: 620px;\n}\n\n.filter-btn {\n background-color: #2d3436;\n border: none;\n height: 29px;\n width: 44px;\n border-radius: 19px;\n color: white;\n font-size: 17px;\n padding-top: 1px;\n top: 20px;\n left: 10px;\n position: absolute;\n z-index: 3;\n}\n\n.add-playlist-btn, .refresh-btn {\n background-color: transparent;\n border: none;\n height: 29px;\n border-radius: 19px;\n color: #2d3436;\n font-size: 17px;\n padding-top: 1px;\n top: 20px;\n right: 10px;\n position: absolute;\n z-index: 1;\n display: inline-block;\n cursor: pointer;\n}\n\n.add-playlist-btn span, .refresh-btn span {\n /* Create Playlist: */\n font-size: 14px;\n font-weight: bold;\n color: #fffbfa;\n letter-spacing: 1.35px;\n text-align: center;\n margin-right: 6px;\n z-index: 1;\n}\n\n.refresh-btn {\n right: auto;\n}\n\n.content {\n position: relative;\n}\n\n.track-container {\n overflow-x: auto;\n width: 100%;\n height: 100%;\n -ms-overflow-style: none;\n overflow: -moz-scrollbars-none;\n overflow-y: hidden;\n}\n\n.track-container::-webkit-scrollbar {\n display: none;\n}\n\n.card-track {\n display: flex;\n overflow-y: hidden;\n overflow-x: scroll;\n width: 2700px;\n z-index: 1;\n padding-left: 42px;\n flex-wrap: wrap;\n height: 470px;\n align-items: flex-start;\n align-content: baseline;\n}\n\n.card-track::-webkit-scrollbar {\n display: none;\n}\n\n.card-track .card {\n background: none;\n width: 252px;\n height: 168px;\n margin-right: 70px;\n position: relative;\n}\n\n.card-track .card img {\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n max-height: 100%;\n}\n\n.card-track .card .card-info {\n background: #2d3436;\n box-shadow: -12px 5px 4px 0 rgba(0, 0, 0, 0.5);\n width: 252px;\n height: 142px;\n position: absolute;\n left: -16px;\n top: 16px;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n justify-content: flex-start;\n padding: 16px 16px 8px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n top: 50px;\n box-sizing: border-box;\n}\n\n.card-track .card .card-info h3 {\n font-size: 14px;\n margin: 0;\n width: 100%;\n color: #fff;\n}\n\n.card-track .card .card-info p {\n color: #fff;\n font-size: 10px;\n margin: 0;\n}\n\n.card-track .card .card-info a {\n text-decoration: none;\n color: #fff;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n}\n\n.card-track .card .card-content {\n background: #fffbfa;\n width: 252px;\n height: 142px;\n margin-right: 70px;\n position: relative;\n z-index: 1;\n}\n\n.card-track .card:nth-child(9) {\n margin-left: 40px;\n}\n\n.card-track .card:nth-child(1n+9) {\n margin-top: 50px;\n}\n\n.track-container {\n overflow-x: auto;\n width: 100%;\n height: 100%;\n -ms-overflow-style: none;\n overflow: -moz-scrollbars-none;\n overflow-y: hidden;\n}\n\n.track-container::-webkit-scrollbar {\n display: none;\n}\n\n.card-track {\n display: flex;\n overflow-y: hidden;\n overflow-x: scroll;\n width: 2700px;\n z-index: 1;\n padding-left: 42px;\n flex-wrap: wrap;\n height: 470px;\n align-items: flex-start;\n align-content: baseline;\n box-sizing: content-box;\n}\n\n.card-track::-webkit-scrollbar {\n display: none;\n}\n\n.card-track .card {\n background: none;\n width: 252px;\n height: 168px;\n position: relative;\n}\n\n.card-track .card img {\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n max-height: 100%;\n}\n\n.card-track .card .card-info {\n background: #2D3436;\n box-shadow: -12px 5px 4px 0 rgba(0, 0, 0, 0.5);\n width: 252px;\n height: 142px;\n position: absolute;\n left: -16px;\n top: 16px;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n justify-content: flex-start;\n padding: 16px 16px 8px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n top: 50px;\n}\n\n.card-track .card .card-info h3 {\n font-size: 14px;\n margin: 0;\n width: 100%;\n color: #fff;\n}\n\n.card-track .card .card-info p {\n color: #fff;\n font-size: 10px;\n margin: 0;\n}\n\n.card-track .card .card-info a {\n text-decoration: none;\n color: #fff;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n}\n\n.card-track .card .card-content {\n background: #FFFBFA;\n width: 252px;\n height: 142px;\n margin-right: 70px;\n position: relative;\n z-index: 1;\n}\n\n.card-track .card:nth-child(9) {\n margin-left: 40px;\n}\n\n.card-track .card:nth-child(1n+9) {\n margin-top: 50px;\n}\n\n@media (min-width: 1024px) {\n .recommendations {\n max-width: 820px;\n }\n .recommendations .header__title {\n border-color: white;\n font-size: 3em;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvcmVjb21tZW5kYXRpb25zL3JlY29tbWVuZGF0aW9ucy5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvcmVjb21tZW5kYXRpb25zL3JlY29tbWVuZGF0aW9ucy5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJO0VBQ0ksY0FBQTtFQUNBLDhCQUFBO0VBQ0EsMEJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQ0EscUJBQUE7RUFDQSxTQUFBO0FDRFI7O0FDRkE7RUFDRSxnQkFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxpREFBQTtBREtGOztBQ0pFO0VBQ0UsVUFBQTtFQUNBLDBCQUFBO0FETUo7O0FDSEU7RUFDRSxZQUFBO0FES0o7O0FDRkU7RUFDRSxtQkFBQTtFQUNBLGdCQUFBO0FESUo7O0FDQUE7RUFDSSxrQkFBQTtBREdKOztBQ0FBO0VBQ0Usa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsNEJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtBREdGOztBQ0RBO0VBQ0UseUJBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFB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a0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QURKUjs7QUNPTTtFQUNFLGlCQUFBO0FETFI7O0FDUU07RUFDRyxnQkFBQTtBRE5UOztBRTFRRTtFRHNSRTtJQUNFLGdCQUFBO0VEUko7RUNVSTtJQUNFLG1CQUFBO0lBQ0EsY0FBQTtFRFJOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3JlY29tbWVuZGF0aW9ucy9yZWNvbW1lbmRhdGlvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZGVyIHtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDhweCBibGFjayBzb2xpZDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIuaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgcGFkZGluZy1ib3R0b206IDAuMmVtO1xuICBtYXJnaW46IDA7XG59XG5cbi5yZWNvbW1lbmRhdGlvbnMge1xuICBtYXgtd2lkdGg6IDYyMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzogNXJlbSAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogNjIwcHg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4ucmVjb21tZW5kYXRpb25zLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5yZWNvbW1lbmRhdGlvbnMgLmhlYWRlciB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5yZWNvbW1lbmRhdGlvbnMgLmhlYWRlcl9fdGl0bGUge1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDIuM2VtO1xufVxuXG4ucmVjb21tZW5kYXRpb25zX19jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucmVjb21tZW5kYXRpb25zX19jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMjVweCAyNXB4IDAgMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHBhZGRpbmctdG9wOiA4MHB4O1xuICBtaW4taGVpZ2h0OiA2MjBweDtcbn1cblxuLmZpbHRlci1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMjlweDtcbiAgd2lkdGg6IDQ0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE5cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBwYWRkaW5nLXRvcDogMXB4O1xuICB0b3A6IDIwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMztcbn1cblxuLmFkZC1wbGF5bGlzdC1idG4sIC5yZWZyZXNoLWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMjlweDtcbiAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgY29sb3I6ICMyZDM0MzY7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgdG9wOiAyMHB4O1xuICByaWdodDogMTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hZGQtcGxheWxpc3QtYnRuIHNwYW4sIC5yZWZyZXNoLWJ0biBzcGFuIHtcbiAgLyogQ3JlYXRlIFBsYXlsaXN0OiAqL1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogI2ZmZmJmYTtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMzVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgei1pbmRleDogMTtcbn1cblxuLnJlZnJlc2gtYnRuIHtcbiAgcmlnaHQ6IGF1dG87XG59XG5cbi5jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udHJhY2stY29udGFpbmVyIHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuICBvdmVyZmxvdzogLW1vei1zY3JvbGxiYXJzLW5vbmU7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cblxuLnRyYWNrLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uY2FyZC10cmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuICB3aWR0aDogMjcwMHB4O1xuICB6LWluZGV4OiAxO1xuICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgaGVpZ2h0OiA0NzBweDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGFsaWduLWNvbnRlbnQ6IGJhc2VsaW5lO1xufVxuLmNhcmQtdHJhY2s6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgd2lkdGg6IDI1MnB4O1xuICBoZWlnaHQ6IDE2OHB4O1xuICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIGltZyB7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xuICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjUpO1xuICB3aWR0aDogMjUycHg7XG4gIGhlaWdodDogMTQycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTE2cHg7XG4gIHRvcDogMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAxNnB4IDE2cHggOHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xuICB0b3A6IDUwcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1pbmZvIGgzIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gcCB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbjogMDtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1jb250ZW50IHtcbiAgYmFja2dyb3VuZDogI2ZmZmJmYTtcbiAgd2lkdGg6IDI1MnB4O1xuICBoZWlnaHQ6IDE0MnB4O1xuICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkOm50aC1jaGlsZCg5KSB7XG4gIG1hcmdpbi1sZWZ0OiA0MHB4O1xufVxuLmNhcmQtdHJhY2sgLmNhcmQ6bnRoLWNoaWxkKDFuKzkpIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbn1cblxuLnRyYWNrLWNvbnRhaW5lciB7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcbiAgb3ZlcmZsb3c6IC1tb3otc2Nyb2xsYmFycy1ub25lO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbi50cmFjay1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNhcmQtdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgd2lkdGg6IDI3MDBweDtcbiAgei1pbmRleDogMTtcbiAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGhlaWdodDogNDcwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1jb250ZW50OiBiYXNlbGluZTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG4uY2FyZC10cmFjazo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmNhcmQtdHJhY2sgLmNhcmQge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB3aWR0aDogMjUycHg7XG4gIGhlaWdodDogMTY4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIGltZyB7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjMkQzNDM2O1xuICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjUpO1xuICB3aWR0aDogMjUycHg7XG4gIGhlaWdodDogMTQycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTE2cHg7XG4gIHRvcDogMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAxNnB4IDE2cHggOHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xuICB0b3A6IDUwcHg7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1pbmZvIGgzIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gcCB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbjogMDtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1jb250ZW50IHtcbiAgYmFja2dyb3VuZDogI0ZGRkJGQTtcbiAgd2lkdGg6IDI1MnB4O1xuICBoZWlnaHQ6IDE0MnB4O1xuICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkOm50aC1jaGlsZCg5KSB7XG4gIG1hcmdpbi1sZWZ0OiA0MHB4O1xufVxuLmNhcmQtdHJhY2sgLmNhcmQ6bnRoLWNoaWxkKDFuKzkpIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAucmVjb21tZW5kYXRpb25zIHtcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xuICB9XG4gIC5yZWNvbW1lbmRhdGlvbnMgLmhlYWRlcl9fdGl0bGUge1xuICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAzZW07XG4gIH1cbn0iLCJAaW1wb3J0IFwiY29tcG9uZW50cy9oZWFkZXJcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcblxuLnJlY29tbWVuZGF0aW9ucyB7XG4gIG1heC13aWR0aDogNjIwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiA1cmVtIDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiA2MjBweDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcbiAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAmLnNob3cge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cblxuICAuaGVhZGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICAuaGVhZGVyX190aXRsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDIuM2VtO1xuICB9XG59XG5cbi5yZWNvbW1lbmRhdGlvbnNfX2NvbnRlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnJlY29tbWVuZGF0aW9uc19fY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDI1cHggMjVweCAwIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBwYWRkaW5nLXRvcDogODBweDtcbiAgbWluLWhlaWdodDogNjIwcHg7XG59XG4uZmlsdGVyLWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiAyOXB4O1xuICB3aWR0aDogNDRweDtcbiAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDE3cHg7XG4gIHBhZGRpbmctdG9wOiAxcHg7XG4gIHRvcDogMjBweDtcbiAgbGVmdDogMTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAzO1xufVxuXG4uYWRkLXBsYXlsaXN0LWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMjlweDtcbiAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgY29sb3I6ICMyZDM0MzY7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgdG9wOiAyMHB4O1xuICByaWdodDogMTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgc3BhbiB7XG4gICAgLyogQ3JlYXRlIFBsYXlsaXN0OiAqL1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogI2ZmZmJmYTtcbiAgICBsZXR0ZXItc3BhY2luZzogMS4zNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG59XG5cbi5yZWZyZXNoLWJ0biB7XG4gIEBleHRlbmQgLmFkZC1wbGF5bGlzdC1idG47XG4gIHJpZ2h0OiBhdXRvO1xufVxuXG4uY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRyYWNrLWNvbnRhaW5lciB7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLy8gSUUgMTArXG4gIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTsgLy8gRmlyZWZveFxuICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbi50cmFjay1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTsgLy8gU2FmYXJpIGFuZCBDaHJvbWVcbn1cblxuLmNhcmQtdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgd2lkdGg6IDI3MDBweDtcbiAgei1pbmRleDogMTtcbiAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGhlaWdodDogNDcwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1jb250ZW50OiBiYXNlbGluZTtcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuY2FyZCB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICB3aWR0aDogMjUycHg7XG4gICAgaGVpZ2h0OiAxNjhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGltZyB7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuY2FyZC1pbmZvIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyZDM0MzY7XG4gICAgICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgICAgd2lkdGg6IDI1MnB4O1xuICAgICAgaGVpZ2h0OiAxNDJweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IC0xNnB4O1xuICAgICAgdG9wOiAxNnB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgcGFkZGluZzogMTZweCAxNnB4IDhweDtcbiAgICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICAgIHRvcDogNTBweDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgcCB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgICAuY2FyZC1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZiZmE7XG4gICAgICB3aWR0aDogMjUycHg7XG4gICAgICBoZWlnaHQ6IDE0MnB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA3MHB4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICAmOm50aC1jaGlsZCg5KSB7XG4gICAgICBtYXJnaW4tbGVmdDogNDBweDtcbiAgICB9XG5cbiAgICAmOm50aC1jaGlsZCgxbiArIDkpIHtcbiAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgfVxuICB9XG59XG5cbiAgLnRyYWNrLWNvbnRhaW5lciB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOyAgLy8gSUUgMTArXG4gICAgb3ZlcmZsb3c6IC1tb3otc2Nyb2xsYmFycy1ub25lOyAgLy8gRmlyZWZveFxuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgfVxuXG4gICAgLnRyYWNrLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgIC8vIFNhZmFyaSBhbmQgQ2hyb21lXG4gICAgfVxuICAuY2FyZC10cmFjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuICAgIHdpZHRoOiAyNzAwcHg7XG4gICAgei1pbmRleDogMTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGhlaWdodDogNDcwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24tY29udGVudDogYmFzZWxpbmU7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICAgLmNhcmQge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIHdpZHRoOiAyNTJweDtcbiAgICAgIGhlaWdodDogMTY4cHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jYXJkLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMkQzNDM2O1xuICAgICAgICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLDAsMCwwLjUwKTtcbiAgICAgICAgd2lkdGg6IDI1MnB4O1xuICAgICAgICBoZWlnaHQ6IDE0MnB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IC0xNnB4O1xuICAgICAgICB0b3A6IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogMTZweCAxNnB4IDhweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgICAgICB0b3A6IDUwcHg7XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNhcmQtY29udGVudCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkZCRkE7XG4gICAgICAgIHdpZHRoOiAyNTJweDtcbiAgICAgICAgaGVpZ2h0OiAxNDJweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3MHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgICY6bnRoLWNoaWxkKDkpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7XG4gICAgICB9XG5cbiAgICAgICY6bnRoLWNoaWxkKDFuKzkpIHtcbiAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgZGVza3RvcCB7XG4gICAgLnJlY29tbWVuZGF0aW9ucyB7XG4gICAgICBtYXgtd2lkdGg6IDgyMHB4O1xuXG4gICAgICAuaGVhZGVyX190aXRsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgfVxuICAgIH1cblxuICB9XG4iLCIkdGFibGV0LXdpZHRoOiA3NjhweDtcbiRkZXNrdG9wLXdpZHRoOiAxMDI0cHg7XG5cbkBtaXhpbiB0YWJsZXQge1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skdGFibGV0LXdpZHRofSkgYW5kIChtYXgtd2lkdGg6ICN7JGRlc2t0b3Atd2lkdGggLSAxcHh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skZGVza3RvcC13aWR0aH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbHQtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC14cyB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufSJdfQ== */"); /***/ }), /***/ "./src/app/components/recommendations/recommendations.component.ts": /*!*************************************************************************!*\ !*** ./src/app/components/recommendations/recommendations.component.ts ***! \*************************************************************************/ /*! exports provided: RecommendationsComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecommendationsComponent", function() { return RecommendationsComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! src/app/services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! src/app/services/spotifyService */ "./src/app/services/spotifyService.ts"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm2015/snack-bar.js"); let RecommendationsComponent = class RecommendationsComponent { constructor(element, intersectionObserverService, infoSvc, spotifyService, sanitizer, snackBar) { this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.spotifyService = spotifyService; this.sanitizer = sanitizer; this.snackBar = snackBar; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.show = false; this.initialTracks = false; } updateAppBackgroundColor() { this.appColor.emit(5); } ngOnInit() { this.infoSvc.getUserStream().subscribe((user) => { console.log('recommendations'); this.user = Object.assign({}, user); }); } ngAfterViewInit() { this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.70 }); this.intersectionObserverSubs = this.intersectionObserverService .getSubject() .subscribe(el => { if (el.isIntersecting) { this.updateAppBackgroundColor(); this.show = true; const config = { allTimeArtistIDs: this.user.allTimeArtistIDs, currentArtistsIDs: this.user.currentArtistsIDs, allTimeTrackIDs: this.user.allTimeTrackIDs, currentTrackIDs: this.user.currentTrackIDs, country: this.user.userInfo.country }; if (!this.initialTracks) { this.spotifyService.getRecommendations(config) .then((data) => { this.recommendedTracks = data.tracks; this.initialTracks = true; }) .catch((err) => { console.log('Error getting recommended Tracks'); }); } } else { this.show = false; } }); } refreshTracks() { const config = { allTimeArtistIDs: this.user.allTimeArtistIDs, currentArtistsIDs: this.user.currentArtistsIDs, allTimeTrackIDs: this.user.allTimeTrackIDs, currentTrackIDs: this.user.currentTrackIDs, country: this.user.userInfo.country }; this.spotifyService.getRecommendations(config).then((data) => { this.recommendedTracks = data.tracks; }).catch((err) => { console.log('playlist error', err); this.snackBar.open('Server Error. Please Try Again Later.', '', { duration: 5000, panelClass: 'panel-error' }); }); } makePlaylist() { const config = { userID: this.user.userInfo.id, playlistName: 'Recommended for You // Obscurify', tracks: this.recommendedTracks }; this.spotifyService.makePlaylist(config).then((results) => { console.log('playlist', results); this.snackBar.open('Playlist Created in Spotify!', '', { duration: 5000, panelClass: 'panel-success' }); }).catch((err) => { console.log('playlist error', err); this.snackBar.open('Server Error. Please Try Again Later.', '', { duration: 5000, panelClass: 'panel-error' }); }); } }; RecommendationsComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__["InfoService"] }, { type: src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_4__["SpotifyService"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_5__["DomSanitizer"] }, { type: _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_6__["MatSnackBar"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], RecommendationsComponent.prototype, "appColor", void 0); RecommendationsComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-recommendations', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./recommendations.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/recommendations/recommendations.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./recommendations.component.scss */ "./src/app/components/recommendations/recommendations.component.scss")).default] }) ], RecommendationsComponent); /***/ }), /***/ "./src/app/components/spotify-auth/spotify-auth.component.ts": /*!*******************************************************************!*\ !*** ./src/app/components/spotify-auth/spotify-auth.component.ts ***! \*******************************************************************/ /*! exports provided: SpotifyAuthComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpotifyAuthComponent", function() { return SpotifyAuthComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); let SpotifyAuthComponent = class SpotifyAuthComponent { constructor(authService, cookieService, tknService) { this.authService = authService; this.cookieService = cookieService; this.tknService = tknService; } ngOnInit() { // Send it back to app home this.authService.authorized(); } }; SpotifyAuthComponent.ctorParameters = () => [ { type: src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] }, { type: src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["TokenService"] } ]; SpotifyAuthComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-spotify-auth', template: `

Authorizing…

`, styles: [""] }) ], SpotifyAuthComponent); /***/ }), /***/ "./src/app/components/top-genres/top-genres.component.scss": /*!*****************************************************************!*\ !*** ./src/app/components/top-genres/top-genres.component.scss ***! \*****************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = (".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.slate {\n padding: 2rem 0px;\n}\n\n.genre {\n max-width: 1024px;\n margin: 0 auto;\n opacity: 0;\n transition: opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre__list {\n margin-top: 2em;\n}\n\n.genre__card {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 5px;\n padding: 1.5em 1.5em;\n opacity: 0;\n transform: translateY(50px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre__card h3 {\n font-size: 2em;\n}\n\n@media (min-width: 1024px) {\n .genre__card {\n min-width: 636px;\n }\n .genre__card h3 {\n font-size: 3em;\n }\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(1) {\n transition: 0s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(2) {\n transition: 0.3s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(3) {\n transition: 0.6s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(4) {\n transition: 0.9s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(5) {\n transition: 1.2s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(6) {\n transition: 1.5s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(7) {\n transition: 1.8s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(8) {\n transition: 2.1s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(9) {\n transition: 2.4s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(10) {\n transition: 2.7s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(11) {\n transition: 3s;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvdG9wLWdlbnJlcy90b3AtZ2VucmVzLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvY29tcG9uZW50cy90b3AtZ2VucmVzL3RvcC1nZW5yZXMuY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLGNBQUE7RUFDQSw4QkFBQTtFQUNBLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsU0FBQTtBQ0RSOztBQ0hBO0VBQ0ksaUJBQUE7QURNSjs7QUNGQTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLFVBQUE7RUFDQSx5REFBQTtBREtKOztBQ0hJO0VBQ0ksZUFBQTtBREtSOztBQ0ZJO0VBQ0ksb0NBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0VBQ0EsVUFBQTtFQUNBLDJCQUFBO0VBQ0EsaURBQUE7QURJUjs7QUNIUTtFQUNJLGNBQUE7QURLWjs7QUVyQkU7RUQyQk07SUFDSSxnQkFBQTtFREZWO0VDSVU7SUFDSSxjQUFBO0VERmQ7QUFDRjs7QUNTSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEUFI7O0FDU1E7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURQWjs7QUNTUTtFQUNJLGNBQUE7QURQWjs7QUNISTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FETVI7O0FDSlE7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURNWjs7QUNKUTtFQUNJLGdCQUFBO0FETVo7O0FDaEJJO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0VBQ0EsaURBQUE7QURtQlI7O0FDakJRO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0FEbUJaOztBQ2pCUTtFQUNJLGdCQUFBO0FEbUJaOztBQzdCSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEZ0NSOztBQzlCUTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRGdDWjs7QUM5QlE7RUFDSSxnQkFBQTtBRGdDWjs7QUMxQ0k7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7RUFDQSxpREFBQTtBRDZDUjs7QUMzQ1E7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QUQ2Q1o7O0FDM0NRO0VBQ0ksZ0JBQUE7QUQ2Q1o7O0FDdkRJO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0VBQ0EsaURBQUE7QUQwRFI7O0FDeERRO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0FEMERaOztBQ3hEUTtFQUNJLGdCQUFBO0FEMERaOztBQ3BFSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEdUVSOztBQ3JFUTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRHVFWjs7QUNyRVE7RUFDSSxnQkFBQTtBRHVFWjs7QUNqRkk7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7RUFDQSxpREFBQTtBRG9GUjs7QUNsRlE7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURvRlo7O0FDbEZRO0VBQ0ksZ0JBQUE7QURvRlo7O0FDOUZJO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0VBQ0EsaURBQUE7QURpR1I7O0FDL0ZRO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0FEaUdaOztBQy9GUTtFQUNJLGdCQUFBO0FEaUdaOztBQzNHSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEOEdSOztBQzVHUTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRDhHWjs7QUM1R1E7RUFDSSxnQkFBQTtBRDhHWjs7QUN4SEk7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7RUFDQSxpREFBQTtBRDJIUjs7QUN6SFE7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QUQySFo7O0FDekhRO0VBQ0ksY0FBQTtBRDJIWiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdG9wLWdlbnJlcy90b3AtZ2VucmVzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhlYWRlciB7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IC4yZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59IiwiLmhlYWRlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDNlbTtcbiAgYm9yZGVyLWJvdHRvbTogOHB4IGJsYWNrIHNvbGlkO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwLjJlbTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uc2xhdGUge1xuICBwYWRkaW5nOiAycmVtIDBweDtcbn1cblxuLmdlbnJlIHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmVfX2xpc3Qge1xuICBtYXJnaW4tdG9wOiAyZW07XG59XG4uZ2VucmVfX2NhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcGFkZGluZzogMS41ZW0gMS41ZW07XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZV9fY2FyZCBoMyB7XG4gIGZvbnQtc2l6ZTogMmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5nZW5yZV9fY2FyZCB7XG4gICAgbWluLXdpZHRoOiA2MzZweDtcbiAgfVxuICAuZ2VucmVfX2NhcmQgaDMge1xuICAgIGZvbnQtc2l6ZTogM2VtO1xuICB9XG59XG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNpdGlvbjogMHM7XG59XG5cbi5nZW5yZS5zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZDpudGgtY2hpbGQoMikge1xuICB0cmFuc2l0aW9uOiAwLjNzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDMpIHtcbiAgdHJhbnNpdGlvbjogMC42cztcbn1cblxuLmdlbnJlLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkOm50aC1jaGlsZCg0KSB7XG4gIHRyYW5zaXRpb246IDAuOXM7XG59XG5cbi5nZW5yZS5zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZDpudGgtY2hpbGQoNSkge1xuICB0cmFuc2l0aW9uOiAxLjJzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDYpIHtcbiAgdHJhbnNpdGlvbjogMS41cztcbn1cblxuLmdlbnJlLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkOm50aC1jaGlsZCg3KSB7XG4gIHRyYW5zaXRpb246IDEuOHM7XG59XG5cbi5nZW5yZS5zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZDpudGgtY2hpbGQoOCkge1xuICB0cmFuc2l0aW9uOiAyLjFzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDkpIHtcbiAgdHJhbnNpdGlvbjogMi40cztcbn1cblxuLmdlbnJlLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkOm50aC1jaGlsZCgxMCkge1xuICB0cmFuc2l0aW9uOiAyLjdzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDExKSB7XG4gIHRyYW5zaXRpb246IDNzO1xufSIsIkBpbXBvcnQgJ2NvbXBvbmVudHMvaGVhZGVyJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5zbGF0ZSB7XG4gICAgcGFkZGluZzogMnJlbSAwcHg7XG5cbn1cblxuLmdlbnJlIHtcbiAgICBtYXgtd2lkdGg6IDEwMjRweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuXG4gICAgJl9fbGlzdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICB9XG5cbiAgICAmX19jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgcGFkZGluZzogMS41ZW0gMS41ZW07XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgfVxuXG4gICAgfVxuICAgIFxufVxuXG5AaW5jbHVkZSBkZXNrdG9wIHtcblxuICAgIC5nZW5yZSB7XG5cbiAgICAgICAgJl9fY2FyZCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDYzNnB4O1xuXG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgLmdlbnJlLnNob3cge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuXG4gICAgICAgIC5nZW5yZV9fY2FyZCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweClcbiAgICAgICAgfVxuICAgICAgICAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKCN7JGkgKyAxfSkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogIDAuM3MgKiAkaTtcbiAgICAgICAgfVxuICAgIH1cblxuICB9IiwiJHRhYmxldC13aWR0aDogNzY4cHg7XG4kZGVza3RvcC13aWR0aDogMTAyNHB4O1xuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHRhYmxldC13aWR0aH0pIGFuZCAobWF4LXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRoIC0gMXB4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JGRlc2t0b3Atd2lkdGh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGx0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QteHMge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn0iXX0= */"); /***/ }), /***/ "./src/app/components/top-genres/top-genres.component.ts": /*!***************************************************************!*\ !*** ./src/app/components/top-genres/top-genres.component.ts ***! \***************************************************************/ /*! exports provided: TopGenresComponent */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopGenresComponent", function() { return TopGenresComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! src/app/services/infoService */ "./src/app/services/infoService.ts"); let TopGenresComponent = class TopGenresComponent { constructor(element, intersectionObserverService, infoSvc) { this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; this.show = false; this.genres = []; } updateAppBackgroundColor() { this.appColor.emit(2); } ngOnInit() { this.infoSvc.getUserStream().subscribe((x) => { console.log('User in Genres', x); if (x.topGenres) { console.log('x.genres'); const genreArry = x.topGenres.slice(0, 10); console.log(genreArry); this.genres = [...genreArry]; } }); } ngAfterViewInit() { this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.20 }); this.intersectionObserverSubs = this.intersectionObserverService .getSubject() .subscribe(el => { if (el.isIntersecting) { this.updateAppBackgroundColor(); this.show = true; } else { this.show = false; } }); } }; TopGenresComponent.ctorParameters = () => [ { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__["InfoService"] } ]; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])() ], TopGenresComponent.prototype, "appColor", void 0); TopGenresComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-top-genres', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! raw-loader!./top-genres.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/top-genres/top-genres.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__(/*! ./top-genres.component.scss */ "./src/app/components/top-genres/top-genres.component.scss")).default] }) ], TopGenresComponent); /***/ }), /***/ "./src/app/services/browserCheck.ts": /*!******************************************!*\ !*** ./src/app/services/browserCheck.ts ***! \******************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/cdk/platform */ "./node_modules/@angular/cdk/esm2015/platform.js"); let BrowserCheck = class BrowserCheck { constructor(platform) { this.platform = platform; if (window.screen.width < 1021) { this.isDevice = true; } else { this.isDevice = false; } } checkIfBrowser() { return this.platform.isBrowser; } }; BrowserCheck.ctorParameters = () => [ { type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__["Platform"] } ]; BrowserCheck = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ providedIn: 'root', }) ], BrowserCheck); /* harmony default export */ __webpack_exports__["default"] = (BrowserCheck); /***/ }), /***/ "./src/app/services/infoService.ts": /*!*****************************************!*\ !*** ./src/app/services/infoService.ts ***! \*****************************************/ /*! exports provided: InfoService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfoService", function() { return InfoService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utilities/obscurityFuncs */ "./src/app/utilities/obscurityFuncs.ts"); let InfoService = class InfoService { constructor(http, router, obscurifyFuncs) { this.http = http; this.router = router; this.obscurifyFuncs = obscurifyFuncs; this.apiUserUrl = 'https://api.spotify.com/v1/me'; this.apiAllTimeArtists = 'https://api.spotify.com/v1/me/top/artists?limit=50&time_range=long_term'; this.apiCurrentArtists = 'https://api.spotify.com/v1/me/top/artists?limit=50&time_range=short_term'; this.apiAllTimeTracks = 'https://api.spotify.com/v1/me/top/tracks?limit=50&time_range=long_term'; this.apiCurrentTracks = 'https://api.spotify.com/v1/me/top/tracks?limit=50&time_range=short_term'; this.user = {}; this.user$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](this.user); } fetchUserInfo() { return this.http.get(this.apiUserUrl).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((user) => { console.log('user info', user); this.user = Object.assign({}, this.user, { userInfo: user }); this.user$.next(this.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelf'))); } fetchAllTimeTracks() { return this.http.get(this.apiAllTimeTracks).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((tracks) => { const allTimeTrackIDs = []; for (const track of tracks.items) { allTimeTrackIDs.push(track.id); } console.log('info service', tracks.items); this.user = Object.assign({}, this.user, { allTimeTracks: tracks.items, allTimeTrackIDs: [...allTimeTrackIDs] }); this.user$.next(this.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } fetchCurrentTracks() { return this.http.get(this.apiCurrentTracks).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((tracks) => { const currentTrackIDs = []; for (const track of tracks.items) { currentTrackIDs.push(track.id); } this.user = Object.assign({}, this.user, { currentTracks: tracks.items, currentTrackIDs: [...currentTrackIDs] }); this.user$.next(this.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } fetchAllTimeArtists() { return this.http.get(this.apiAllTimeArtists).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((artists) => { let allTimeObscurifyScore = 0; const genres = {}; const topGenres = []; const allTimeArtistIDs = []; // Loop Through All Time Artists // Get Obscure Score and Top Genres for (let i = 0; i < artists.items.length; i++) { allTimeObscurifyScore = allTimeObscurifyScore + (50 / artists.items.length) * Math.floor(artists.items[i].popularity * (1 - i / artists.items.length)); allTimeArtistIDs.push(artists.items[i].id); for (let y = 0; y < artists.items[i].genres.length; y++) { if (genres[artists.items[i].genres[y]] != null) { genres[artists.items[i].genres[y]] = genres[artists.items[i].genres[y]] + 1; } else { genres[artists.items[i].genres[y]] = 1; } } } for (const g in genres) { if (genres.hasOwnProperty(g)) { topGenres.push([g, genres[g]]); } } topGenres.sort(this.obscurifyFuncs.comparator); allTimeObscurifyScore = Math.floor(allTimeObscurifyScore / 10); this.user = Object.assign({}, this.user, { allTimeArtists: artists.items, allTimeObscurifyScore: (allTimeObscurifyScore), topGenres: (topGenres), allTimeArtistIDs: (allTimeArtistIDs) }); this.user$.next(this.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } fetchCurrentArtists() { return this.http.get(this.apiCurrentArtists).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((artists) => { let recentObscurifyScore = 0; const currentArtistsIDs = []; for (let i = 0; i < artists.items.length; i++) { currentArtistsIDs.push(artists.items[i]); recentObscurifyScore = recentObscurifyScore + (50 / artists.items.length) * Math.floor(artists.items[i].popularity * (1 - i / artists.items.length)); } recentObscurifyScore = Math.floor(recentObscurifyScore / 10); this.user = Object.assign({}, this.user, { currentArtistsIDs: [...currentArtistsIDs], currentArtists: artists.items, recentObscurifyScore: (recentObscurifyScore) }); this.user$.next(this.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } fetchRecommendations() { return this.http.get(this.apiCurrentArtists).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((artists) => { this.user = Object.assign({}, this.user, { currentArtists: artists }); this.user$.next(this.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } getUserStream() { return this.user$.asObservable(); } handleError(operation = 'operation', result) { return (error) => { result = error; return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["of"])(result); }; } }; InfoService.ctorParameters = () => [ { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_5__["HttpClient"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"] }, { type: _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_6__["default"] } ]; InfoService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])() ], InfoService); /***/ }), /***/ "./src/app/services/intersectionObserver.ts": /*!**************************************************!*\ !*** ./src/app/services/intersectionObserver.ts ***! \**************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); class IntersectionObserverService { constructor() { this.intersectionObserverSubject = new rxjs__WEBPACK_IMPORTED_MODULE_1__["Subject"](); } getSubject() { return this.intersectionObserverSubject; } init(el, options) { const OBS = new IntersectionObserver(entries => { this.intersectionObserverSubject.next(entries[0]); }, options); OBS.observe(el); } } /* harmony default export */ __webpack_exports__["default"] = (IntersectionObserverService); /***/ }), /***/ "./src/app/services/obscurifyService.ts": /*!**********************************************!*\ !*** ./src/app/services/obscurifyService.ts ***! \**********************************************/ /*! exports provided: ObscurifyService, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObscurifyService", function() { return ObscurifyService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); let ObscurifyService = class ObscurifyService { constructor(http) { this.http = http; this.obscurifyData = {}; this.obscurifyUrl = 'https://ktp0b5os1g.execute-api.us-east-2.amazonaws.com/dev'; this.obscurifyData$ = new rxjs__WEBPACK_IMPORTED_MODULE_3__["BehaviorSubject"](this.obscurifyData); } getObscurifyData(countryID, obscurifyScore, recentObscurifyScore) { return this.http.get(this.obscurifyUrl + `/getObscurifyData?code=${countryID}&obscurifyScore=${obscurifyScore}&recentObscurifyScore=${recentObscurifyScore}`, { headers: new _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpHeaders"]().set('Authorization', 'asdf') }) .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])((data) => { console.log('user info', data); this.obscurifyData = Object.assign({}, data); this.obscurifyData$.next(this.obscurifyData); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('Error'))); } handleError(operation = 'operation', result) { return (error) => { result = error; return Object(rxjs__WEBPACK_IMPORTED_MODULE_3__["of"])(result); }; } }; ObscurifyService.ctorParameters = () => [ { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"] } ]; ObscurifyService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["Injectable"])() ], ObscurifyService); /* harmony default export */ __webpack_exports__["default"] = (ObscurifyService); /***/ }), /***/ "./src/app/services/spotifyAuth/index.ts": /*!***********************************************!*\ !*** ./src/app/services/spotifyAuth/index.ts ***! \***********************************************/ /*! exports provided: ScopesBuilder, TokenService, AuthService, AuthGuard, SpotifyAuthInterceptor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _shared_scopes_builder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shared/scopes-builder */ "./src/app/services/spotifyAuth/shared/scopes-builder.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScopesBuilder", function() { return _shared_scopes_builder__WEBPACK_IMPORTED_MODULE_1__["ScopesBuilder"]; }); /* harmony import */ var _service_token_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./service/token.service */ "./src/app/services/spotifyAuth/service/token.service.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TokenService", function() { return _service_token_service__WEBPACK_IMPORTED_MODULE_2__["TokenService"]; }); /* harmony import */ var _service_auth_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./service/auth.service */ "./src/app/services/spotifyAuth/service/auth.service.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AuthService", function() { return _service_auth_service__WEBPACK_IMPORTED_MODULE_3__["AuthService"]; }); /* harmony import */ var _service_auth_guard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./service/auth.guard */ "./src/app/services/spotifyAuth/service/auth.guard.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AuthGuard", function() { return _service_auth_guard__WEBPACK_IMPORTED_MODULE_4__["AuthGuard"]; }); /* harmony import */ var _service_spotify_auth_interceptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./service/spotify-auth.interceptor */ "./src/app/services/spotifyAuth/service/spotify-auth.interceptor.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SpotifyAuthInterceptor", function() { return _service_spotify_auth_interceptor__WEBPACK_IMPORTED_MODULE_5__["SpotifyAuthInterceptor"]; }); /***/ }), /***/ "./src/app/services/spotifyAuth/service/auth.guard.ts": /*!************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/auth.guard.ts ***! \************************************************************/ /*! exports provided: AuthGuard */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthGuard", function() { return AuthGuard; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _auth_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./auth.service */ "./src/app/services/spotifyAuth/service/auth.service.ts"); /* harmony import */ var _token_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./token.service */ "./src/app/services/spotifyAuth/service/token.service.ts"); let AuthGuard = class AuthGuard { constructor(authService, tokenSvc) { this.authService = authService; this.tokenSvc = tokenSvc; } canActivate(next, state) { return this.canActivateChild(next, state); } canActivateChild(next, state) { const response = next.queryParams; if (response.spotifyToken && response.obscurifyToken) { this.tokenSvc.setAuthToken(response); } return !!response; } }; AuthGuard.ctorParameters = () => [ { type: _auth_service__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: _token_service__WEBPACK_IMPORTED_MODULE_3__["TokenService"] } ]; AuthGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])() ], AuthGuard); /***/ }), /***/ "./src/app/services/spotifyAuth/service/auth.service.ts": /*!**************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/auth.service.ts ***! \**************************************************************/ /*! exports provided: AuthService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthService", function() { return AuthService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); /* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../../environments/environment */ "./src/environments/environment.ts"); let AuthService = class AuthService { constructor(cookieService) { this.cookieService = cookieService; this.requestAuthUrl = 'https://accounts.spotify.com/authorize'; this.authorized$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](false); this.state = this.generateRandomString(); this.authConfig = { client_id: _environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].client_id, response_type: 'code', redirect_uri: _environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].redirect_uri, state: this.state, show_dialog: false, scope: 'user-read-private user-top-read playlist-modify-public playlist-modify-private' }; } generateRandomString() { var text = ''; var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (var i = 0; i < 16; i++) { text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; } ; authorize() { console.log('authorize()'); console.log(this.buildAuthUrl()); this.cookieService.set('spotify_auth_state', this.state); window.location.href = this.buildAuthUrl(); } // Signal someone, that router can navigate somewhere authorized() { console.log('Called auth'); this.authorized$.next(true); } get authorizedStream() { return this.authorized$.asObservable(); } configure(config) { // Validate Config this.authConfig = config; return this; } buildAuthUrl() { const params = []; for (const [key, value] of Object.entries(this.authConfig)) { if (typeof (value) === 'object') { params.push(`${key}=${value.join(' ')}`); } else { params.push(`${key}=${value}`); } } return `${this.requestAuthUrl}?${params.join('&')}`; } }; AuthService.ctorParameters = () => [ { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] } ]; AuthService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])() ], AuthService); /***/ }), /***/ "./src/app/services/spotifyAuth/service/spotify-auth.interceptor.ts": /*!**************************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/spotify-auth.interceptor.ts ***! \**************************************************************************/ /*! exports provided: SpotifyAuthInterceptor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpotifyAuthInterceptor", function() { return SpotifyAuthInterceptor; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _token_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./token.service */ "./src/app/services/spotifyAuth/service/token.service.ts"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); let SpotifyAuthInterceptor = class SpotifyAuthInterceptor { constructor(tokenSvc) { this.tokenSvc = tokenSvc; } intercept(req, next) { const authReq = req.clone({ setHeaders: this.tokenSvc.authHeader }); return next.handle(authReq).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])((event) => { }, this.doOnError)); } }; SpotifyAuthInterceptor.ctorParameters = () => [ { type: _token_service__WEBPACK_IMPORTED_MODULE_2__["TokenService"] } ]; SpotifyAuthInterceptor = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])() ], SpotifyAuthInterceptor); /***/ }), /***/ "./src/app/services/spotifyAuth/service/token.service.ts": /*!***************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/token.service.ts ***! \***************************************************************/ /*! exports provided: TokenService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TokenService", function() { return TokenService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); let TokenService = class TokenService { constructor(cookieService) { this.cookieService = cookieService; this.token = { spotifyToken: '', obscurifyToken: '' }; this.token$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](this.token); } get oAuthToken() { return this.token; } clearToken() { this.token = { spotifyToken: '', obscurifyToken: '' }; this.token$.next(this.token); } get authHeader() { return this.token.spotifyToken ? { Authorization: `Bearer ${this.token.spotifyToken}` } : {}; } get authTokens() { return this.token$.asObservable(); } setAuthTokenCache(tokenCookie) { if (!!tokenCookie) { this.token.spotifyToken = tokenCookie; } else { this.token.spotifyToken = ''; } this.token$.next(this.token); return !!this.token; } setAuthToken(spotifyResponse) { if (!!spotifyResponse && !!spotifyResponse.spotifyToken && !!spotifyResponse.obscurifyToken) { console.log('Spotify Repsonse', spotifyResponse); console.log('Spotify Time', spotifyResponse.expires_in); const now = new Date(); now.setTime(now.getTime() + 1 * 3600 * 1000); this.cookieService.set('spotifyResponse', spotifyResponse.spotifyToken, now); this.token.spotifyToken = spotifyResponse.spotifyToken; this.token.obscurifyToken = spotifyResponse.obscurifyToken; } else { this.token = { spotifyToken: '', obscurifyToken: '' }; } this.token$.next(this.token); return !!this.token; } }; TokenService.ctorParameters = () => [ { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] } ]; TokenService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])() ], TokenService); /***/ }), /***/ "./src/app/services/spotifyAuth/shared/scopes-builder.ts": /*!***************************************************************!*\ !*** ./src/app/services/spotifyAuth/shared/scopes-builder.ts ***! \***************************************************************/ /*! exports provided: ScopesBuilder */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScopesBuilder", function() { return ScopesBuilder; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); class ScopesBuilder { constructor() { this.scopes = [ ScopesBuilder.USERS, ScopesBuilder.PLAYLISTS, ScopesBuilder.HISTORY, ScopesBuilder.LIBRARY, ScopesBuilder.CONNECT, ScopesBuilder.FOLLOW, ScopesBuilder.PLAYBACK ]; } /** * * @param args [] means no particular scopes or public only */ withScopes(...args) { this.scopes = args; return this; } build() { const buffer = []; this.scopes.forEach(scope => { if (typeof (scope) === 'string') { buffer.push(scope); } else { Object.keys(scope).forEach((property) => buffer.push(scope[property])); } }); return buffer.join(' '); } } ScopesBuilder.USERS = { READ_PRIVATE: 'user-read-private', READ_EMAIL: 'user-read-email', READ_BIRTHDATE: 'user-read-birthdate' }; ScopesBuilder.PLAYLISTS = { READ_PRIVATE: 'playlist-read-private', MODIFY_PRIVATE: 'playlist-modify-private', MODIFY_PPUBLIC: 'playlist-modify-public', READ_COLLABORATIVE: 'playlist-read-collaborative' }; ScopesBuilder.HISTORY = { TOP_READ: 'user-top-read', READ_RECENTLY_PLAYED: 'user-read-recently-played' }; ScopesBuilder.LIBRARY = { READ: 'user-library-read', MODIFY: 'user-library-modify' }; ScopesBuilder.CONNECT = { READ_CURRENTLY_PLAYING: 'user-read-currently-playing', MODIFY_PLAYBACK_STATE: 'user-modify-playback-state', READ_PLAYBACK_STATE: 'user-read-playback-state' }; ScopesBuilder.FOLLOW = { READ: 'user-follow-read', MODIFY: 'user-follow-modify' }; ScopesBuilder.PLAYBACK = { STREAMING: 'streaming' }; /***/ }), /***/ "./src/app/services/spotifyService.ts": /*!********************************************!*\ !*** ./src/app/services/spotifyService.ts ***! \********************************************/ /*! exports provided: SpotifyService */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpotifyService", function() { return SpotifyService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/cdk/platform */ "./node_modules/@angular/cdk/esm2015/platform.js"); let SpotifyService = class SpotifyService { constructor(http, platform) { this.http = http; this.platform = platform; } getRecommendations(config) { let url; if (config.allTimeArtistIDs && config.allTimeTrackIDs) { url = 'https://api.spotify.com/v1/recommendations?seed_artists?country=' + ',' + config.allTimeArtistIDs[Math.floor(Math.random() * config.allTimeArtistIDs.length)] + config.currentArtistsIDs[Math.floor(Math.random() * config.currentArtistsIDs.length)] + '&seed_tracks=' + config.allTimeTrackIDs[Math.floor(Math.random() * config.allTimeTrackIDs.length)] + ',' + config.currentTrackIDs[Math.floor(Math.random() * config.currentTrackIDs.length)] + '&market=' + config.country + '&max_popularity=55' + '&min_popularity=25' + '&limit=16'; } else { url = 'https://api.spotify.com/v1/recommendations?seed_artists?country=' + ',' + config.currentArtistsIDs[Math.floor(Math.random() * config.currentArtistsIDs.length)] + '&seed_tracks=' + config.currentTrackIDs[Math.floor(Math.random() * config.currentTrackIDs.length)] + '&market=' + config.country + '&max_popularity=55' + '&min_popularity=25' + '&limit=16'; } return new Promise((resolve, reject) => { this.http.get(url).subscribe((data) => { resolve(data); }, err => { reject(err); }); }); } makePlaylist(config) { const { userID, token, playlistName, tracks } = config; const url = 'https://api.spotify.com/v1/users/' + userID + '/playlists'; const headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpHeaders"]() .set('Authorization', 'Bearer ' + token) .set('Accept', 'application/json'); const that = this; return new Promise((resolve, reject) => { this.http.post(url, { name: playlistName }, { headers: (headers) }).subscribe((data) => { resolve(data); const uriArray = []; const playlistID = data.id; for (const track of tracks) { uriArray.push(track.uri); } that.fillPlaylistWithTracks(config, uriArray, playlistID); }, (err) => { reject(err); }); }); } fillPlaylistWithTracks(config, uriArray, playlistID) { const url = 'https://api.spotify.com/v1/users/' + config.userID + '/playlists/' + playlistID + '/tracks'; const headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpHeaders"]() .set('Authorization', 'Bearer ') .set('Accept', 'application/json'); return new Promise((resolve, reject) => { this.http.post(url, { uris: uriArray }, { headers: (headers) }).subscribe((data) => { resolve(data); }, (err) => { reject(err); }); }); } }; SpotifyService.ctorParameters = () => [ { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"] }, { type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__["Platform"] } ]; SpotifyService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["Injectable"])() ], SpotifyService); /***/ }), /***/ "./src/app/utilities/obscurityFuncs.ts": /*!*********************************************!*\ !*** ./src/app/utilities/obscurityFuncs.ts ***! \*********************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); class ObscurityFuncs { findRandomGenres(artist) { if (artist.genres.length > 1) { const random1 = Math.floor(Math.random() * artist.genres.length); let random2 = Math.floor(Math.random() * artist.genres.length); while (random1 == random2) { random2 = Math.floor(Math.random() * artist.genres.length); } const returnData = { randomGenre1: artist.genres[random1], randomGenre2: artist.genres[random2] }; // check to see if these genres contain the word "christmas", if so remove it if (returnData.randomGenre1.indexOf('christmas') > -1) { returnData.randomGenre1 = returnData.randomGenre1.replace('christmas', ''); } if (returnData.randomGenre2.indexOf('christmas') > -1) { returnData.randomGenre2 = returnData.randomGenre2.replace('christmas', ''); } return returnData; } else if (artist.genres.length == 1) { return { randomGenre1: artist.genres[0], randomGenre2: null }; } else { return { randomGenre1: null, randomGenre2: null }; } } findStarRating(popularity) { switch (popularity) { case (popularity >= 90): return '★★★★★'; case (popularity >= 80): return '★★★★'; case (popularity >= 65): return '★★★'; case (popularity >= 50): return '★★'; case (popularity >= 35): return '★'; default: return ''; } } comparator(a, b) { if (a[1] > b[1]) { return -1; } if (a[1] < b[1]) { return 1; } return 0; } } /* harmony default export */ __webpack_exports__["default"] = (ObscurityFuncs); /***/ }), /***/ "./src/environments/environment.ts": /*!*****************************************!*\ !*** ./src/environments/environment.ts ***! \*****************************************/ /*! exports provided: environment */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function() { return environment; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); // 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`. const environment = { production: false, redirect_uri: 'https://ktp0b5os1g.execute-api.us-east-2.amazonaws.com/dev/callbackLocal', client_id: '31e362f6085c4309a2e1a6d2c0f8d8ec' }; /* * 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. /***/ }), /***/ "./src/main.ts": /*!*********************!*\ !*** ./src/main.ts ***! \*********************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! hammerjs */ "./node_modules/hammerjs/hammer.js"); /* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(hammerjs__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js"); /* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app/app.module */ "./src/app/app.module.ts"); /* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./environments/environment */ "./src/environments/environment.ts"); if (_environments_environment__WEBPACK_IMPORTED_MODULE_5__["environment"].production) { Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["enableProdMode"])(); } Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_4__["AppModule"]) .catch(err => console.error(err)); /***/ }), /***/ 0: /*!***************************!*\ !*** multi ./src/main.ts ***! \***************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(/*! /Users/alex/Desktop/obscurify3/src/main.ts */"./src/main.ts"); /***/ }) },[[0,"runtime","vendor"]]]); ================================================ FILE: frontend/dist/obscurify3/main-es5.js ================================================ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["main"], { /***/ "./$$_lazy_route_resource lazy recursive": /*!******************************************************!*\ !*** ./$$_lazy_route_resource lazy namespace object ***! \******************************************************/ /*! no static exports found */ /***/ function $$_lazy_route_resourceLazyRecursive(module, exports) { function webpackEmptyAsyncContext(req) { // Here Promise.resolve().then() is used instead of new Promise() to prevent // uncaught exception popping up in devtools return Promise.resolve().then(function () { var e = new Error("Cannot find module '" + req + "'"); e.code = 'MODULE_NOT_FOUND'; throw e; }); } webpackEmptyAsyncContext.keys = function () { return []; }; webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; module.exports = webpackEmptyAsyncContext; webpackEmptyAsyncContext.id = "./$$_lazy_route_resource lazy recursive"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html": /*!**************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html ***! \**************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppAppComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "\n\n\n\n\n\n\n\n\n\n\n\n\n"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/about/about.component.html": /*!*********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/about/about.component.html ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsAboutAboutComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n Go back \n
\n
\n

\n About\n

\n

\n The goal of Obscurify is to help you better understand your own music taste. It uses\n Spotify's Web API to display your listening history, define\n your top genres, and to recommend under-the-radar songs you might like.\n

\n

\n The global popularity ratings of the artists in your lists are aggregated to result in an Obscurity score\n which is compared to the Obscurify users in your country to show how unique (or energetic, danceable, and happy) a music taste you have.\n

\n

\n Obscurify can also make playlists of the music in your track lists and place them in your Spotify library - including the historical snapshots\n that are saved when you view your Obscurify profile each month.\n

\n\n

\n Background Photo on login page by Photo by MARK S. on Unsplash. \n

\n
\n \n
\n

F.A.Q.

\n \n

How is my data used?

\n

\n To use Obscurify, you'll need to allow the app to have access to some of your account information -\n that being your username, the country your account is registered to, and the artists/tracks\n that appear on your lists.\n

\n \n

Where does the artist and track ranking come from?

\n

\n The content and order of your lists come directly from Spotify's API.\n Popularity, genres, and musical traits are all determined by Spotify.\n

\n \n

Why are there no (or few) results showing up in my All-Time and Current lists?

\n

\n If you listen in Private Mode, those songs will not be recorded and won't be reflected in either list.\n If your account is fairly new, it is normal for your All-Time list to be short, as it takes some time for Spotify to update their information.\n

\n \n

Some of the genres seem a little off...

\n

\n Spotify can attribute some artists with a few dozen genres. These range from very general (like \"rock\") to a little\n more interesting (like \"escape room\").\n

\n \n

My lists aren't updating

\n

\n There is no defined schedule for when Spotify updates the data in your lists - it's normal for delays, but expect an average of one to two weeks.\n

\n \n

I have some other issue (or concern, compliment, maybe a suggestion)

\n

\n I'd like to know about it! Send me an email!\n

\n
\n \n
\n"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-card/artist-card.component.html": /*!****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-card/artist-card.component.html ***! \****************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsArtistArtistCardArtistCardComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n \n
\n
\n {{ i + 1 }} / \n\n
\n

\n {{(artist.name.length < 20) ? (artist.name):(artist.name | slice:0:20)+'...' }}\n

\n

\n {{ artist.genres[0] }}, {{ artist.genres[1] }}\n

\n
\n \n
\n\n
\n \n
\n\n\n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-list/artist-list.component.html": /*!****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-list/artist-list.component.html ***! \****************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsArtistArtistListArtistListComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n

\n {{ this.navState.selectedHistory.name }} Top {{ navState.listType}}\n

\n
\n\n
\n
\n
\n\n \n\n
\n
\n\n \n\n
\n\n
\n\n \n\n
\n
\n\n \n\n
\n\n
\n \n \n\n
\n
\n\n\n
\n \n
\n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-nav/artist-nav.component.html": /*!**************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-nav/artist-nav.component.html ***! \**************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsArtistArtistNavArtistNavComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n\n
\n \n
\n
\n

Select

\n
\n \n \n
\n
\n

View History

\n \n \n \n {{ date.name }}\n \n \n
\n \n
\n \n
\n
\n \n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/track-card/track-card.component.html": /*!**************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/track-card/track-card.component.html ***! \**************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsArtistTrackCardTrackCardComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n\n \n \n
\n
\n {{ i + 1 }} /\n\n
\n

\n {{(track.name.length < 20) ? (track.name):(track.name | slice:0:20)+'...' }}\n

\n

\n {{ track.artists[0].name }}\n

\n
\n \n
\n\n
\n \n
\n\n\n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/footer/footer.component.html": /*!***********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/footer/footer.component.html ***! \***********************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsFooterFooterComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ""; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/home/home.component.html": /*!*******************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/home/home.component.html ***! \*******************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsHomeHomeComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "\n
\n \n \n \n \n \n \n
\n\n\n\n"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/intro/intro.component.html": /*!*********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/intro/intro.component.html ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsIntroIntroComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "\n\n
\n

Welcome to
Obscurify.

\n
\n\n
\n
\n \n
\n

Hello, {{ userName }}. Let's see how obscure your taste is...

\n
\n"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login/login.component.html": /*!*********************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/login/login.component.html ***! \*********************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsLoginLoginComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n

Obscurify.

\n\n

Learn more about your music taste and compare it to others' with Obscurify.

\n\n \n\n
\n
\n\n\n"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/moods-graph/moods-graph.component.html": /*!*********************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/moods-graph/moods-graph.component.html ***! \*********************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsMoodsGraphMoodsGraphComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n
\n

\n Your Moods\n

\n
\n \n
\n
\n

Happiness

\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n
\n
\n

Danceability

\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n\n
\n
\n

All Time

\n

2.4% Lower than U.S Average

\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-graph/obscurity-graph.component.html": /*!*****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-graph/obscurity-graph.component.html ***! \*****************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsObscurityGraphObscurityGraphComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n
\n
\n

100

\n

Global Avg

\n
\n
\n

100

\n \n

Avg

\n
\n
\n

100

\n

My All-Time

\n
\n \n
\n

100

\n

My Recent

\n
\n
\n
\n

The lower your score, the more obscure your music taste is. The higher, the more relatable.

\n \n
\n
\n
\n\n "; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-rating/obscurity-rating.component.html": /*!*******************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-rating/obscurity-rating.component.html ***! \*******************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsObscurityRatingObscurityRatingComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "\n
\n
\n\n
\n

\n Obscurity Rating\n

\n
\n\n
\n
\n \n

80%

\n\n

Your music is more obscure than\n 80%\n of 300000 US users on Obscurify.\n

\n\n \n
\n \n
\n\n \n \n \n \n\n \n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/recommendations/recommendations.component.html": /*!*****************************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/recommendations/recommendations.component.html ***! \*****************************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsRecommendationsRecommendationsComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n
\n

\n Recommendations\n

\n
\n
\n
\n \n\n \n \n \n \n
\n
\n\n\n
\n
"; /***/ }, /***/ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/top-genres/top-genres.component.html": /*!*******************************************************************************************************!*\ !*** ./node_modules/raw-loader/dist/cjs.js!./src/app/components/top-genres/top-genres.component.html ***! \*******************************************************************************************************/ /*! exports provided: default */ /***/ function node_modulesRawLoaderDistCjsJsSrcAppComponentsTopGenresTopGenresComponentHtml(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "
\n
\n
\n

\n Top Genres\n

\n
\n\n
\n
\n

{{ i + 1 }} / {{ item[0] }}

\n
\n\n \n
\n
\n
"; /***/ }, /***/ "./node_modules/tslib/tslib.es6.js": /*!*****************************************!*\ !*** ./node_modules/tslib/tslib.es6.js ***! \*****************************************/ /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ /***/ function node_modulesTslibTslibEs6Js(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function () { return __extends; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function () { return _assign; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function () { return __rest; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function () { return __decorate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function () { return __param; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function () { return __metadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function () { return __awaiter; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function () { return __generator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function () { return __exportStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function () { return __values; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function () { return __read; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function () { return __spread; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function () { return __spreadArrays; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function () { return __await; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function () { return __asyncGenerator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function () { return __asyncDelegator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function () { return __asyncValues; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function () { return __makeTemplateObject; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function () { return __importStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function () { return __importDefault; }); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; function __extends(d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var _assign = function __assign() { _assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return _assign.apply(this, arguments); }; function __rest(s, e) { var t = {}; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; } if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); }; } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __exportStar(m, exports) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function next() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments[i])); } return ar; } function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) { s += arguments[i].length; } for (var r = Array(s), k = 0, i = 0; i < il; i++) { for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) { r[k] = a[j]; } } return r; } ; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; } ; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; } result.default = mod; return result; } function __importDefault(mod) { return mod && mod.__esModule ? mod : { default: mod }; } /***/ }, /***/ "./src/app/app-routing.module.ts": /*!***************************************!*\ !*** ./src/app/app-routing.module.ts ***! \***************************************/ /*! exports provided: AppRoutingModule */ /***/ function srcAppAppRoutingModuleTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppRoutingModule", function () { return AppRoutingModule; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var _components_login_login_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./components/login/login.component */ "./src/app/components/login/login.component.ts"); /* harmony import */ var _components_home_home_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./components/home/home.component */ "./src/app/components/home/home.component.ts"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./components/spotify-auth/spotify-auth.component */ "./src/app/components/spotify-auth/spotify-auth.component.ts"); /* harmony import */ var _components_about_about_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( /*! ./components/about/about.component */ "./src/app/components/about/about.component.ts"); var routes = [{ path: 'about', component: _components_about_about_component__WEBPACK_IMPORTED_MODULE_7__["AboutComponent"] }, { path: 'login', component: _components_login_login_component__WEBPACK_IMPORTED_MODULE_3__["LoginComponent"] }, { path: 'home', component: _components_home_home_component__WEBPACK_IMPORTED_MODULE_4__["HomeComponent"] }, { path: '', redirectTo: 'login', pathMatch: 'full' }, { path: 'authorized', canActivate: [_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__["AuthGuard"]], component: _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_6__["SpotifyAuthComponent"] }]; var AppRoutingModule = function AppRoutingModule() { _classCallCheck(this, AppRoutingModule); }; AppRoutingModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["NgModule"])({ imports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"].forRoot(routes)], exports: [_angular_router__WEBPACK_IMPORTED_MODULE_2__["RouterModule"]] })], AppRoutingModule); /***/ }, /***/ "./src/app/app.component.scss": /*!************************************!*\ !*** ./src/app/app.component.scss ***! \************************************/ /*! exports provided: default */ /***/ function srcAppAppComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".app {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n padding: 0 1em;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksaURBQUE7RUFDQSxjQUFBO0FDRkoiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICdtaXhpbnMnO1xuXG5cbi5hcHAge1xuICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICBwYWRkaW5nOiAwIDFlbTtcbn0iLCIuYXBwIHtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgcGFkZGluZzogMCAxZW07XG59Il19 */"; /***/ }, /***/ "./src/app/app.component.ts": /*!**********************************!*\ !*** ./src/app/app.component.ts ***! \**********************************/ /*! exports provided: AppComponent */ /***/ function srcAppAppComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppComponent", function () { return AppComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); var AppComponent = /*#__PURE__*/ function () { function AppComponent(tokenSvc, authService, router) { _classCallCheck(this, AppComponent); this.tokenSvc = tokenSvc; this.authService = authService; this.router = router; this.title = 'obscurify3'; } _createClass(AppComponent, [{ key: "ngOnInit", value: function ngOnInit() { var _this = this; this.authService.authorizedStream.subscribe(function (x) { if (x) { _this.router.navigate(['home']); } }); } }, { key: "getUserInfo", value: function getUserInfo() {} }, { key: "logout", value: function logout() { this.tokenSvc.clearToken(); this.router.navigate(['login']); } }]); return AppComponent; }(); AppComponent.ctorParameters = function () { return [{ type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }, { type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"] }]; }; AppComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-root', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./app.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/app.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./app.component.scss */ "./src/app/app.component.scss")).default] })], AppComponent); /***/ }, /***/ "./src/app/app.module.ts": /*!*******************************!*\ !*** ./src/app/app.module.ts ***! \*******************************/ /*! exports provided: AppModule */ /***/ function srcAppAppModuleTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppModule", function () { return AppModule; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/platform-browser/animations */ "./node_modules/@angular/platform-browser/fesm2015/animations.js"); /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! @angular/cdk/platform */ "./node_modules/@angular/cdk/esm2015/platform.js"); /* harmony import */ var _angular_material_radio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! @angular/material/radio */ "./node_modules/@angular/material/esm2015/radio.js"); /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js"); /* harmony import */ var _angular_flex_layout__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( /*! @angular/flex-layout */ "./node_modules/@angular/flex-layout/esm2015/flex-layout.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( /*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( /*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm2015/snack-bar.js"); /* harmony import */ var _angular_material_menu__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( /*! @angular/material/menu */ "./node_modules/@angular/material/esm2015/menu.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__( /*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); /* harmony import */ var _app_routing_module__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__( /*! ./app-routing.module */ "./src/app/app-routing.module.ts"); /* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__( /*! ./app.component */ "./src/app/app.component.ts"); /* harmony import */ var _components_home_home_component__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__( /*! ./components/home/home.component */ "./src/app/components/home/home.component.ts"); /* harmony import */ var _components_intro_intro_component__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__( /*! ./components/intro/intro.component */ "./src/app/components/intro/intro.component.ts"); /* harmony import */ var _components_top_genres_top_genres_component__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__( /*! ./components/top-genres/top-genres.component */ "./src/app/components/top-genres/top-genres.component.ts"); /* harmony import */ var _components_obscurity_rating_obscurity_rating_component__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__( /*! ./components/obscurity-rating/obscurity-rating.component */ "./src/app/components/obscurity-rating/obscurity-rating.component.ts"); /* harmony import */ var _components_obscurity_graph_obscurity_graph_component__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__( /*! ./components/obscurity-graph/obscurity-graph.component */ "./src/app/components/obscurity-graph/obscurity-graph.component.ts"); /* harmony import */ var _components_artist_artist_list_artist_list_component__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__( /*! ./components/artist/artist-list/artist-list.component */ "./src/app/components/artist/artist-list/artist-list.component.ts"); /* harmony import */ var _components_artist_artist_card_artist_card_component__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__( /*! ./components/artist/artist-card/artist-card.component */ "./src/app/components/artist/artist-card/artist-card.component.ts"); /* harmony import */ var _components_artist_artist_nav_artist_nav_component__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__( /*! ./components/artist/artist-nav/artist-nav.component */ "./src/app/components/artist/artist-nav/artist-nav.component.ts"); /* harmony import */ var _components_moods_graph_moods_graph_component__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__( /*! ./components/moods-graph/moods-graph.component */ "./src/app/components/moods-graph/moods-graph.component.ts"); /* harmony import */ var _components_recommendations_recommendations_component__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__( /*! ./components/recommendations/recommendations.component */ "./src/app/components/recommendations/recommendations.component.ts"); /* harmony import */ var _components_login_login_component__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__( /*! ./components/login/login.component */ "./src/app/components/login/login.component.ts"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__( /*! ./services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__( /*! ./components/spotify-auth/spotify-auth.component */ "./src/app/components/spotify-auth/spotify-auth.component.ts"); /* harmony import */ var _services_infoService__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__( /*! ./services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__( /*! ./utilities/obscurityFuncs */ "./src/app/utilities/obscurityFuncs.ts"); /* harmony import */ var _components_artist_track_card_track_card_component__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__( /*! ./components/artist/track-card/track-card.component */ "./src/app/components/artist/track-card/track-card.component.ts"); /* harmony import */ var _services_spotifyService__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__( /*! ./services/spotifyService */ "./src/app/services/spotifyService.ts"); /* harmony import */ var _components_about_about_component__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__( /*! ./components/about/about.component */ "./src/app/components/about/about.component.ts"); /* harmony import */ var _components_footer_footer_component__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__( /*! ./components/footer/footer.component */ "./src/app/components/footer/footer.component.ts"); /* harmony import */ var _services_obscurifyService__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__( /*! ./services/obscurifyService */ "./src/app/services/obscurifyService.ts"); var AppModule = function AppModule() { _classCallCheck(this, AppModule); }; AppModule = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["NgModule"])({ declarations: [_app_component__WEBPACK_IMPORTED_MODULE_13__["AppComponent"], _components_home_home_component__WEBPACK_IMPORTED_MODULE_14__["HomeComponent"], _components_intro_intro_component__WEBPACK_IMPORTED_MODULE_15__["IntroComponent"], _components_top_genres_top_genres_component__WEBPACK_IMPORTED_MODULE_16__["TopGenresComponent"], _components_obscurity_rating_obscurity_rating_component__WEBPACK_IMPORTED_MODULE_17__["ObscurityRatingComponent"], _components_obscurity_graph_obscurity_graph_component__WEBPACK_IMPORTED_MODULE_18__["ObscurityGraphComponent"], _components_artist_artist_list_artist_list_component__WEBPACK_IMPORTED_MODULE_19__["ArtistListComponent"], _components_artist_artist_card_artist_card_component__WEBPACK_IMPORTED_MODULE_20__["ArtistCardComponent"], _components_artist_artist_nav_artist_nav_component__WEBPACK_IMPORTED_MODULE_21__["ArtistNavComponent"], _components_moods_graph_moods_graph_component__WEBPACK_IMPORTED_MODULE_22__["MoodsGraphComponent"], _components_recommendations_recommendations_component__WEBPACK_IMPORTED_MODULE_23__["RecommendationsComponent"], _components_login_login_component__WEBPACK_IMPORTED_MODULE_24__["LoginComponent"], _components_spotify_auth_spotify_auth_component__WEBPACK_IMPORTED_MODULE_26__["SpotifyAuthComponent"], _components_artist_track_card_track_card_component__WEBPACK_IMPORTED_MODULE_29__["TrackCardComponent"], _components_about_about_component__WEBPACK_IMPORTED_MODULE_31__["AboutComponent"], _components_footer_footer_component__WEBPACK_IMPORTED_MODULE_32__["FooterComponent"]], imports: [_angular_flex_layout__WEBPACK_IMPORTED_MODULE_7__["FlexLayoutModule"], _angular_platform_browser__WEBPACK_IMPORTED_MODULE_1__["BrowserModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_12__["AppRoutingModule"], _angular_platform_browser_animations__WEBPACK_IMPORTED_MODULE_3__["BrowserAnimationsModule"], _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_4__["PlatformModule"], _angular_material_radio__WEBPACK_IMPORTED_MODULE_5__["MatRadioModule"], _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_9__["MatSnackBarModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_6__["FormsModule"], _app_routing_module__WEBPACK_IMPORTED_MODULE_12__["AppRoutingModule"], _angular_common_http__WEBPACK_IMPORTED_MODULE_8__["HttpClientModule"], _angular_material_menu__WEBPACK_IMPORTED_MODULE_10__["MatMenuModule"]], providers: [_utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_28__["default"], _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["AuthService"], _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["TokenService"], _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["AuthGuard"], ngx_cookie_service__WEBPACK_IMPORTED_MODULE_11__["CookieService"], _services_infoService__WEBPACK_IMPORTED_MODULE_27__["InfoService"], _services_obscurifyService__WEBPACK_IMPORTED_MODULE_33__["default"], _services_spotifyService__WEBPACK_IMPORTED_MODULE_30__["SpotifyService"], [{ provide: _angular_common_http__WEBPACK_IMPORTED_MODULE_8__["HTTP_INTERCEPTORS"], // Force interception to use your new shiny headers! useClass: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_25__["SpotifyAuthInterceptor"], multi: true }]], bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_13__["AppComponent"]] })], AppModule); /***/ }, /***/ "./src/app/components/about/about.component.scss": /*!*******************************************************!*\ !*** ./src/app/components/about/about.component.scss ***! \*******************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsAboutAboutComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "main {\n width: 100%;\n background-color: #A9E5AC;\n}\n\nsection {\n margin: 2em 0;\n max-width: 772px;\n padding: 0 2em;\n}\n\nsection p {\n margin-bottom: 1em;\n}\n\nsection h2, section h3 {\n margin-bottom: 1em;\n}\n\n.back__btn {\n padding: 1em 1em;\n color: black;\n width: 200px;\n background-color: white;\n text-decoration: none;\n border-radius: 5px;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYWJvdXQvYWJvdXQuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYWJvdXQvYWJvdXQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxXQUFBO0VBQ0EseUJBQUE7QUNDSjs7QURFQTtFQUNJLGFBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNDSjs7QURDSTtFQUNJLGtCQUFBO0FDQ1I7O0FERUk7RUFDSSxrQkFBQTtBQ0FSOztBRElBO0VBQ0ksZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLHVCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtBQ0RKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hYm91dC9hYm91dC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIm1haW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNBOUU1QUM7XG59XG5cbnNlY3Rpb24ge1xuICAgIG1hcmdpbjogMmVtIDA7XG4gICAgbWF4LXdpZHRoOiA3NzJweDtcbiAgICBwYWRkaW5nOiAwIDJlbTtcblxuICAgIHAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfVxuXG4gICAgaDIsIGgzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgIH1cbn1cblxuLmJhY2tfX2J0biB7XG4gICAgcGFkZGluZzogMWVtIDFlbTtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG59IiwibWFpbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTlFNUFDO1xufVxuXG5zZWN0aW9uIHtcbiAgbWFyZ2luOiAyZW0gMDtcbiAgbWF4LXdpZHRoOiA3NzJweDtcbiAgcGFkZGluZzogMCAyZW07XG59XG5zZWN0aW9uIHAge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5zZWN0aW9uIGgyLCBzZWN0aW9uIGgzIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG4uYmFja19fYnRuIHtcbiAgcGFkZGluZzogMWVtIDFlbTtcbiAgY29sb3I6IGJsYWNrO1xuICB3aWR0aDogMjAwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn0iXX0= */"; /***/ }, /***/ "./src/app/components/about/about.component.ts": /*!*****************************************************!*\ !*** ./src/app/components/about/about.component.ts ***! \*****************************************************/ /*! exports provided: AboutComponent */ /***/ function srcAppComponentsAboutAboutComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AboutComponent", function () { return AboutComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); var AboutComponent = /*#__PURE__*/ function () { function AboutComponent() { _classCallCheck(this, AboutComponent); } _createClass(AboutComponent, [{ key: "ngOnInit", value: function ngOnInit() {} }]); return AboutComponent; }(); AboutComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-about', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./about.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/about/about.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./about.component.scss */ "./src/app/components/about/about.component.scss")).default] })], AboutComponent); /***/ }, /***/ "./src/app/components/artist/artist-card/artist-card.component.scss": /*!**************************************************************************!*\ !*** ./src/app/components/artist/artist-card/artist-card.component.scss ***! \**************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsArtistArtistCardArtistCardComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".artist__card {\n width: 100%;\n min-width: 200px;\n height: 75px;\n position: relative;\n overflow: hidden;\n border-radius: 5px;\n box-shadow: 5px 5px 4px 4px rgba(0, 0, 0, 0.5);\n color: white;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n.artist__card img {\n position: absolute;\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n}\n.artist__card.active {\n height: 200px;\n}\n.artist__card.active .artist__card__info {\n height: 100%;\n}\n.artist__card span {\n margin-top: 2px;\n}\n.artist__card__info {\n height: 60px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n position: absolute;\n width: 100%;\n background: rgba(0, 0, 0, 0.55);\n border-radius: 5px;\n bottom: 0;\n box-sizing: border-box;\n padding: 1rem 0.5rem;\n font-size: 1.2rem;\n}\n.artist__card__info--secondary, .artist__card__info--primary {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n margin-left: 1rem;\n}\n.artist__card__info--primary {\n font-size: 1.2em;\n margin-bottom: 0.5rem;\n}\n.artist__card__external {\n color: white;\n cursor: pointer;\n}\n.artist__card button {\n margin-top: 1em;\n background: transparent;\n width: 125px;\n text-align: center;\n font-size: 12px;\n color: #fff;\n display: block;\n border-radius: 25px;\n font-weight: 700;\n margin: 1em auto 0;\n border: 2px solid #A9E5AC;\n padding: 1em;\n cursor: pointer;\n}\n@media (min-width: 768px) and (max-width: 1023px) {\n .artist__card {\n height: 150px;\n width: 200px;\n margin-bottom: 1em;\n }\n .artist__card.active {\n height: 150px;\n }\n}\n@media (min-width: 1024px) {\n .artist__card {\n height: 170px;\n width: 220px;\n margin-bottom: 1em;\n }\n .artist__card__info {\n font-size: 1rem;\n }\n .artist__card.active {\n height: 170px;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1jYXJkL2FydGlzdC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2FydGlzdC9hcnRpc3QtY2FyZC9hcnRpc3QtY2FyZC5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksV0FBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLDhDQUFBO0VBQ0EsWUFBQTtFQUNBLGlEQUFBO0FDRko7QURJSTtFQUNJLGtCQUFBO0VBQ0Esb0JBQUE7S0FBQSxpQkFBQTtFQUNBLFdBQUE7QUNGUjtBREtJO0VBQ0ksYUFBQTtBQ0hSO0FES1E7RUFDSSxZQUFBO0FDSFo7QURPSTtFQUNJLGVBQUE7QUNMUjtBRFFJO0VBQ0ksWUFBQTtFQUNBLGlEQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsK0JBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxzQkFBQTtFQUNBLG9CQUFBO0VBQ0EsaUJBQUE7QUNOUjtBRFFRO0VBQ0ksaURBQUE7RUFDQSxpQkFBQTtBQ05aO0FEU1E7RUFDSSxnQkFBQTtFQUNBLHFCQUFBO0FDUFo7QURZSTtFQUNJLFlBQUE7RUFDQSxlQUFBO0FDVlI7QURhSTtFQUNJLGVBQUE7RUFDQSx1QkFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7QUNYUjtBQzNERTtFRjJFRTtJQUNJLGFBQUE7SUFDQSxZQUFBO0lBQ0Esa0JBQUE7RUNaTjtFRGFNO0lBQ0ksYUFBQTtFQ1hWO0FBQ0Y7QUNoRUU7RUZpRkU7SUFDSSxhQUFBO0lBQ0EsWUFBQTtJQUNBLGtCQUFBO0VDZE47RURnQk07SUFDSSxlQUFBO0VDZFY7RURpQk07SUFDSSxhQUFBO0VDZlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1jYXJkL2FydGlzdC1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5hcnRpc3RfX2NhcmQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiA3NXB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBib3gtc2hhZG93OiA1cHggNXB4IDRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0cmFuc2l0aW9uOiAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuMSwuMjUsMSk7XG5cbiAgICBpbWcge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgIFxuICAgICAgICAuYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgfVxuICAgIFxuICAgICZfX2luZm8ge1xuICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwuNTUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIGJvdHRvbTogMDsgIFxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAgXG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcblxuICAgICAgICAmLS1zZWNvbmRhcnksICYtLXByaW1hcnkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2V4dGVybmFsIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgd2lkdGg6IDEyNXB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBtYXJnaW46IDFlbSBhdXRvIDA7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRwcmltYXJ5LWNvbG9yO1xuICAgICAgICBwYWRkaW5nOiAxZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbkBpbmNsdWRlIHRhYmxldCB7XG4gICAgLmFydGlzdF9fY2FyZCB7XG4gICAgICAgIGhlaWdodDogMTUwcHg7XG4gICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbkBpbmNsdWRlIGRlc2t0b3Age1xuICAgIC5hcnRpc3RfX2NhcmQge1xuICAgICAgICBoZWlnaHQ6IDE3MHB4O1xuICAgICAgICB3aWR0aDogMjIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcblxuICAgICAgICAmX19pbmZvIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGhlaWdodDogMTcwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbn0iLCIuYXJ0aXN0X19jYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIGhlaWdodDogNzVweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJveC1zaGFkb3c6IDVweCA1cHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5hcnRpc3RfX2NhcmQgaW1nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgd2lkdGg6IDEwMCU7XG59XG4uYXJ0aXN0X19jYXJkLmFjdGl2ZSB7XG4gIGhlaWdodDogMjAwcHg7XG59XG4uYXJ0aXN0X19jYXJkLmFjdGl2ZSAuYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmFydGlzdF9fY2FyZCBzcGFuIHtcbiAgbWFyZ2luLXRvcDogMnB4O1xufVxuLmFydGlzdF9fY2FyZF9faW5mbyB7XG4gIGhlaWdodDogNjBweDtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjU1KTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBib3R0b206IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDFyZW0gMC41cmVtO1xuICBmb250LXNpemU6IDEuMnJlbTtcbn1cbi5hcnRpc3RfX2NhcmRfX2luZm8tLXNlY29uZGFyeSwgLmFydGlzdF9fY2FyZF9faW5mby0tcHJpbWFyeSB7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xufVxuLmFydGlzdF9fY2FyZF9faW5mby0tcHJpbWFyeSB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cbi5hcnRpc3RfX2NhcmRfX2V4dGVybmFsIHtcbiAgY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uYXJ0aXN0X19jYXJkIGJ1dHRvbiB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAxMjVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luOiAxZW0gYXV0byAwO1xuICBib3JkZXI6IDJweCBzb2xpZCAjQTlFNUFDO1xuICBwYWRkaW5nOiAxZW07XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5hcnRpc3RfX2NhcmQge1xuICAgIGhlaWdodDogMTUwcHg7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgfVxuICAuYXJ0aXN0X19jYXJkLmFjdGl2ZSB7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuYXJ0aXN0X19jYXJkIHtcbiAgICBoZWlnaHQ6IDE3MHB4O1xuICAgIHdpZHRoOiAyMjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIH1cbiAgLmFydGlzdF9fY2FyZF9faW5mbyB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICB9XG4gIC5hcnRpc3RfX2NhcmQuYWN0aXZlIHtcbiAgICBoZWlnaHQ6IDE3MHB4O1xuICB9XG59IiwiJHRhYmxldC13aWR0aDogNzY4cHg7XG4kZGVza3RvcC13aWR0aDogMTAyNHB4O1xuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHRhYmxldC13aWR0aH0pIGFuZCAobWF4LXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRoIC0gMXB4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JGRlc2t0b3Atd2lkdGh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGx0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QteHMge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn0iXX0= */"; /***/ }, /***/ "./src/app/components/artist/artist-card/artist-card.component.ts": /*!************************************************************************!*\ !*** ./src/app/components/artist/artist-card/artist-card.component.ts ***! \************************************************************************/ /*! exports provided: ArtistCardComponent */ /***/ function srcAppComponentsArtistArtistCardArtistCardComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArtistCardComponent", function () { return ArtistCardComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/browserCheck */ "./src/app/services/browserCheck.ts"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); var ArtistCardComponent = /*#__PURE__*/ function () { function ArtistCardComponent(browserCheck, sanitizer) { _classCallCheck(this, ArtistCardComponent); this.browserCheck = browserCheck; this.sanitizer = sanitizer; this.activeView = false; } _createClass(ArtistCardComponent, [{ key: "onClick", value: function onClick(btn) { if (this.browserCheck.isDevice) { this.activeView = !this.activeView; } } }, { key: "onMouseEnter", value: function onMouseEnter(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = true; } } }, { key: "onMouseLeave", value: function onMouseLeave(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = false; } } }, { key: "ngOnInit", value: function ngOnInit() {} }]); return ArtistCardComponent; }(); ArtistCardComponent.ctorParameters = function () { return [{ type: src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__["DomSanitizer"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], ArtistCardComponent.prototype, "artist", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], ArtistCardComponent.prototype, "i", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('touchend', ['$event.target'])], ArtistCardComponent.prototype, "onClick", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseenter', ['$event.target'])], ArtistCardComponent.prototype, "onMouseEnter", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseleave', ['$event.target'])], ArtistCardComponent.prototype, "onMouseLeave", null); ArtistCardComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-artist-card', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./artist-card.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-card/artist-card.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./artist-card.component.scss */ "./src/app/components/artist/artist-card/artist-card.component.scss")).default] })], ArtistCardComponent); /***/ }, /***/ "./src/app/components/artist/artist-list/artist-list.component.scss": /*!**************************************************************************!*\ !*** ./src/app/components/artist/artist-list/artist-list.component.scss ***! \**************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsArtistArtistListArtistListComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.artist {\n max-width: 1024px;\n margin: 0 auto;\n padding: 2rem 0px;\n}\n\n.artist .header__title {\n text-transform: capitalize;\n}\n\n.artist__container {\n margin-top: 2em;\n}\n\n.artist__container__grid::after {\n content: \"\";\n flex: auto;\n}\n\n.artist__button {\n margin-top: 2em;\n background: #D8D8D8;\n border-radius: 23.5px;\n font-size: 16px;\n color: #090909;\n text-align: center;\n padding: 1em 2em;\n border: none;\n font-weight: bold;\n}\n\n.artist__button:hover {\n border: none;\n cursor: pointer;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1saXN0L2FydGlzdC1saXN0LmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvYXJ0aXN0LWxpc3QvYXJ0aXN0LWxpc3QuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUk7RUFDSSxjQUFBO0VBQ0EsOEJBQUE7RUFDQSwwQkFBQTtFQUFBLHVCQUFBO0VBQUEsa0JBQUE7RUFDQSxxQkFBQTtFQUNBLFNBQUE7QUNEUjs7QUNGQTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0FES0o7O0FDSEk7RUFDSSwwQkFBQTtBREtSOztBQ0ZJO0VBQ0ksZUFBQTtBRElSOztBQ0FRO0VBQ0ksV0FBQTtFQUNBLFVBQUE7QURFWjs7QUNFSTtFQUNJLGVBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0FEQVI7O0FDQ1E7RUFDSSxZQUFBO0VBQ0EsZUFBQTtBRENaIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvYXJ0aXN0LWxpc3QvYXJ0aXN0LWxpc3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZGVyIHtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDhweCBibGFjayBzb2xpZDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIuaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgcGFkZGluZy1ib3R0b206IDAuMmVtO1xuICBtYXJnaW46IDA7XG59XG5cbi5hcnRpc3Qge1xuICBtYXgtd2lkdGg6IDEwMjRweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IDJyZW0gMHB4O1xufVxuLmFydGlzdCAuaGVhZGVyX190aXRsZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuLmFydGlzdF9fY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMmVtO1xufVxuLmFydGlzdF9fY29udGFpbmVyX19ncmlkOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGZsZXg6IGF1dG87XG59XG4uYXJ0aXN0X19idXR0b24ge1xuICBtYXJnaW4tdG9wOiAyZW07XG4gIGJhY2tncm91bmQ6ICNEOEQ4RDg7XG4gIGJvcmRlci1yYWRpdXM6IDIzLjVweDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogIzA5MDkwOTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAxZW0gMmVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fYnV0dG9uOmhvdmVyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59IiwiQGltcG9ydCAnbWl4aW5zJztcbkBpbXBvcnQgJ2NvbXBvbmVudHMvaGVhZGVyJztcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5cbi5hcnRpc3Qge1xuICAgIG1heC13aWR0aDogMTAyNHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDJyZW0gMHB4O1xuXG4gICAgLmhlYWRlcl9fdGl0bGUge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICB9XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAyZW07XG4gICAgfVxuXG4gICAgJl9fY29udGFpbmVyX19ncmlkIHtcbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgIGZsZXg6IGF1dG87XG4gICAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogI0Q4RDhEODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjMuNXB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGNvbG9yOiAjMDkwOTA5O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDFlbSAyZW07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ== */"; /***/ }, /***/ "./src/app/components/artist/artist-list/artist-list.component.ts": /*!************************************************************************!*\ !*** ./src/app/components/artist/artist-list/artist-list.component.ts ***! \************************************************************************/ /*! exports provided: ArtistListComponent */ /***/ function srcAppComponentsArtistArtistListArtistListComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArtistListComponent", function () { return ArtistListComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm2015/snack-bar.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! src/app/services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! src/app/services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! src/app/services/spotifyService */ "./src/app/services/spotifyService.ts"); var ArtistListComponent = /*#__PURE__*/ function () { function ArtistListComponent(element, intersectionObserverService, infoSvc, tokenSvc, spotifyService, snackBar) { _classCallCheck(this, ArtistListComponent); this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.tokenSvc = tokenSvc; this.spotifyService = spotifyService; this.snackBar = snackBar; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.navState = { listType: 'artists', historyList: [{ name: 'Current', value: 'current' }, { name: 'All Time', value: 'allTime' }], selectedHistory: { name: 'Current', value: 'current' } }; this.allTimeArtists = []; this.currentArtists = []; this.allTimeTracks = []; this.currentTracks = []; this.sliceLimit = 10; this.showNav = false; } _createClass(ArtistListComponent, [{ key: "updateAppBackgroundColor", value: function updateAppBackgroundColor() { this.appColor.emit(4); } }, { key: "ngOnInit", value: function ngOnInit() { var _this2 = this; this.infoSvc.fetchAllTimeArtists().subscribe(function (x) { if (x.items) { _this2.allTimeArtists = _toConsumableArray(x.items); } }); this.infoSvc.fetchAllTimeTracks().subscribe(function (x) { if (x.items) { _this2.allTimeTracks = _toConsumableArray(x.items); } }); this.infoSvc.fetchCurrentTracks().subscribe(function (x) { if (x.items) { _this2.currentTracks = _toConsumableArray(x.items); } }); this.infoSvc.fetchCurrentArtists().subscribe(function (x) { if (x.items) { _this2.currentArtists = _toConsumableArray(x.items); } }); this.infoSvc.getUserStream().subscribe(function (user) { _this2.userInfo = Object.assign({}, user.userInfo); }); } }, { key: "ngAfterViewInit", value: function ngAfterViewInit() { var _this3 = this; this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.20 }); this.intersectionObserverSubs = this.intersectionObserverService.getSubject().subscribe(function (el) { if (el.isIntersecting) { console.log('is intersecting artists'); _this3.updateAppBackgroundColor(); _this3.showNav = true; } else { _this3.showNav = false; } }); } }, { key: "getHistory", value: function getHistory(data) { this.navState = Object.assign({}, data); console.log(this.navState); } }, { key: "createPlaylist", value: function createPlaylist() { var _this4 = this; var playlistName = ''; if (this.navState.selectedHistory.name === 'Current') { playlistName = 'Current'; } else { playlistName = 'All-Time Top Tracks // Obscurify'; } if (playlistName === 'Current') { var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; var dateObj = new Date(); var month = monthNames[dateObj.getMonth()]; // months from 1-12 var day = dateObj.getDate(); var year = dateObj.getFullYear() % 100; var newdate = month + ' ' + day + ' \'' + year; playlistName = newdate + ' // Obscurify'; } var config = { userID: this.userInfo.id, token: this.tokenSvc.oAuthToken, playlistName: playlistName, tracks: null }; if (this.navState.selectedHistory.value === 'current') { config.tracks = this.currentTracks; } else { config.tracks = this.allTimeTracks; } this.spotifyService.makePlaylist(config).then(function (results) { console.log('playlist', results); _this4.snackBar.open('Playlist Created in Spotify!', '', { duration: 5000, panelClass: 'panel-success' }); }).catch(function (err) { console.log('playlist error', err); _this4.snackBar.open('Server Error. Please Try Again Later.', '', { duration: 5000, panelClass: 'panel-error' }); }); } }, { key: "showMore", value: function showMore() { this.sliceLimit = 50; } }, { key: "showLess", value: function showLess() { this.sliceLimit = 10; } }]); return ArtistListComponent; }(); ArtistListComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_3__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_4__["InfoService"] }, { type: src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_5__["TokenService"] }, { type: src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_6__["SpotifyService"] }, { type: _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_2__["MatSnackBar"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], ArtistListComponent.prototype, "appColor", void 0); ArtistListComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-artist-list', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./artist-list.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-list/artist-list.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_3__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./artist-list.component.scss */ "./src/app/components/artist/artist-list/artist-list.component.scss")).default] })], ArtistListComponent); /***/ }, /***/ "./src/app/components/artist/artist-nav/artist-nav.component.scss": /*!************************************************************************!*\ !*** ./src/app/components/artist/artist-nav/artist-nav.component.scss ***! \************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsArtistArtistNavArtistNavComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".artist__nav {\n padding: 0em 2em 1em;\n height: 4em;\n width: 100%;\n box-sizing: border-box;\n position: fixed;\n bottom: 0;\n background: white;\n margin-left: -1em;\n border: 1px solid #E4E4E4;\n}\n.artist__nav.active {\n height: 70vh;\n}\n.artist__nav__mobile {\n margin-bottom: 2em;\n display: flex;\n justify-content: stretch;\n}\n.artist__nav__mobile button {\n font-size: 1em;\n border: none;\n background: none;\n width: 100%;\n text-align: right;\n margin-top: 1em;\n}\n.artist__nav__mobile button span {\n float: left;\n font-size: 24px;\n font-weight: bold;\n}\n.artist__nav__mobile button i {\n margin-left: 1em;\n}\n.artist__nav__content h2 {\n margin-bottom: 0.5em;\n}\n.artist__nav__main {\n margin-bottom: 2em;\n}\n.artist__nav__main .artist__nav__button {\n margin-right: 1em;\n font-size: 1em;\n}\n.artist__nav__history {\n margin-bottom: 2em;\n}\n.artist__nav__history h3 {\n margin-bottom: 1em;\n}\n.artist__nav__playlist button {\n background: #D8D8D8;\n padding: 8px 1em;\n font-size: 1em;\n border: none;\n font-weight: bold;\n}\n.artist__nav__playlist button i {\n margin-right: 5px;\n}\n.artist__nav__button {\n background: transparent;\n border: none;\n border-radius: 5px;\n font-size: 1.5em;\n padding: 8px 1em;\n border: 2px solid #e4e4e4;\n font-weight: bold;\n}\n.artist__nav__button.active {\n background: #A9E5AC;\n border: 2px solid #A9E5AC;\n}\n.artist__nav .select__item {\n margin-bottom: 1em;\n}\n@media screen and (min-width: 600px) {\n .artist__nav__content {\n width: 60%;\n max-width: 310px;\n }\n}\n@media screen and (max-width: 959px) {\n .artist__nav {\n box-shadow: 3px 14px 16px 8px #000;\n }\n .artist__nav__container {\n margin: 0em 0 0;\n }\n\n .artist__nav__content {\n margin: 0 auto;\n }\n}\n@media screen and (min-width: 960px) {\n .artist__nav {\n padding: 1em 1em;\n border-radius: 5px;\n height: auto;\n box-sizing: border-box;\n position: static;\n background: white;\n margin-left: 0em;\n }\n .artist__nav__container {\n margin: 0em 0 0;\n }\n .artist__nav__content {\n width: 100%;\n }\n .artist__nav__mobile {\n display: none;\n }\n .artist__nav.active {\n height: auto;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1uYXYvYXJ0aXN0LW5hdi5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvYXJ0aXN0LW5hdi9hcnRpc3QtbmF2LmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLG9CQUFBO0VBRUEsV0FBQTtFQUNBLFdBQUE7RUFDQSxzQkFBQTtFQUNBLGVBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLHlCQUFBO0FDSEo7QURLSTtFQUNJLFlBQUE7QUNIUjtBRE1JO0VBQ0ksa0JBQUE7RUFDQSxhQUFBO0VBQ0Esd0JBQUE7QUNKUjtBRE1RO0VBQ0ksY0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7QUNKWjtBRE1ZO0VBQ0ksV0FBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtBQ0poQjtBRE9ZO0VBQ0ksZ0JBQUE7QUNMaEI7QURXUTtFQUNJLG9CQUFBO0FDVFo7QURjSTtFQUNJLGtCQUFBO0FDWlI7QURjUTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtBQ1paO0FEZ0JJO0VBSUksa0JBQUE7QUNqQlI7QURjUTtFQUNJLGtCQUFBO0FDWlo7QURrQlE7RUFDSSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBQ2hCWjtBRGlCWTtFQUNJLGlCQUFBO0FDZmhCO0FEb0JJO0VBQ0ksdUJBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EseUJBQUE7RUFDQSxpQkFBQTtBQ2xCUjtBRG1CUTtFQUNJLG1CRW5GSTtFRm9GSix5QkFBQTtBQ2pCWjtBRHFCSTtFQUNJLGtCQUFBO0FDbkJSO0FFaERFO0VId0VFO0lBQ0ksVUFBQTtJQUNBLGdCQUFBO0VDcEJOO0FBQ0Y7QUVuRUU7RUg0RkU7SUFDSSxrQ0FBQTtFQ3RCTjtFRHdCTTtJQUNJLGVBQUE7RUN0QlY7O0VEMEJFO0lBQ0ksY0FBQTtFQ3ZCTjtBQUNGO0FFekVFO0VIcUdFO0lBQ0ksZ0JBQUE7SUFDQSxrQkFBQTtJQUVBLFlBQUE7SUFDQSxzQkFBQTtJQUNBLGdCQUFBO0lBQ0EsaUJBQUE7SUFDQSxnQkFBQTtFQzFCTjtFRDZCTTtJQUNJLGVBQUE7RUMzQlY7RUQ4Qk07SUFDSSxXQUFBO0VDNUJWO0VEK0JNO0lBQ0ksYUFBQTtFQzdCVjtFRGdDTTtJQUNJLFlBQUE7RUM5QlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L2FydGlzdC1uYXYvYXJ0aXN0LW5hdi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuXG4uYXJ0aXN0X19uYXYge1xuICAgIHBhZGRpbmc6IDBlbSAyZW0gMWVtO1xuXG4gICAgaGVpZ2h0OiA0ZW07XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFNEU0RTQ7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGhlaWdodDogNzB2aDtcbiAgICB9XG5cbiAgICAmX19tb2JpbGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcbiAgICAgICAgXG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19jb250ZW50IHtcbiAgICAgICAgaDIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFxuICAgICZfX21haW4ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyZW07XG5cbiAgICAgICAgLmFydGlzdF9fbmF2X19idXR0b24ge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2hpc3Rvcnkge1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgICAgIH1cbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMmVtO1xuICAgIH1cblxuICAgICZfX3BsYXlsaXN0IHtcbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEOEQ4RDg7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBmb250LXNpemU6IDEuNWVtO1xuICAgICAgICBwYWRkaW5nOiA4cHggMWVtO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjZTRlNGU0O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHByaW1hcnktY29sb3I7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zZWxlY3RfX2l0ZW0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG4gICAgfSAgIFxufVxuXG5AaW5jbHVkZSBndC14cyB7XG4gICAgLmFydGlzdF9fbmF2X19jb250ZW50IHtcbiAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgbWF4LXdpZHRoOiAzMTBweDtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGx0LW1kIHtcblxuICAgIC5hcnRpc3RfX25hdiB7XG4gICAgICAgIGJveC1zaGFkb3c6IDNweCAxNHB4IDE2cHggOHB4ICMwMDA7XG5cbiAgICAgICAgJl9fY29udGFpbmVyIHtcbiAgICAgICAgICAgIG1hcmdpbjogMGVtIDAgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hcnRpc3RfX25hdl9fY29udGVudCB7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgZ3QtbWQge1xuXG4gICAgLmFydGlzdF9fbmF2IHtcbiAgICAgICAgcGFkZGluZzogMWVtIDFlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwZW07XG5cblxuICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luOiAwZW0gMCAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJl9fY29udGVudCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgICZfX21vYmlsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG4gICAgXG4gICAgfVxuXG59IiwiLmFydGlzdF9fbmF2IHtcbiAgcGFkZGluZzogMGVtIDJlbSAxZW07XG4gIGhlaWdodDogNGVtO1xuICB3aWR0aDogMTAwJTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBtYXJnaW4tbGVmdDogLTFlbTtcbiAgYm9yZGVyOiAxcHggc29saWQgI0U0RTRFNDtcbn1cbi5hcnRpc3RfX25hdi5hY3RpdmUge1xuICBoZWlnaHQ6IDcwdmg7XG59XG4uYXJ0aXN0X19uYXZfX21vYmlsZSB7XG4gIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xufVxuLmFydGlzdF9fbmF2X19tb2JpbGUgYnV0dG9uIHtcbiAgZm9udC1zaXplOiAxZW07XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICBtYXJnaW4tdG9wOiAxZW07XG59XG4uYXJ0aXN0X19uYXZfX21vYmlsZSBidXR0b24gc3BhbiB7XG4gIGZsb2F0OiBsZWZ0O1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fbmF2X19tb2JpbGUgYnV0dG9uIGkge1xuICBtYXJnaW4tbGVmdDogMWVtO1xufVxuLmFydGlzdF9fbmF2X19jb250ZW50IGgyIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG59XG4uYXJ0aXN0X19uYXZfX21haW4ge1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG59XG4uYXJ0aXN0X19uYXZfX21haW4gLmFydGlzdF9fbmF2X19idXR0b24ge1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgZm9udC1zaXplOiAxZW07XG59XG4uYXJ0aXN0X19uYXZfX2hpc3Rvcnkge1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG59XG4uYXJ0aXN0X19uYXZfX2hpc3RvcnkgaDMge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG4uYXJ0aXN0X19uYXZfX3BsYXlsaXN0IGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6ICNEOEQ4RDg7XG4gIHBhZGRpbmc6IDhweCAxZW07XG4gIGZvbnQtc2l6ZTogMWVtO1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fbmF2X19wbGF5bGlzdCBidXR0b24gaSB7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuLmFydGlzdF9fbmF2X19idXR0b24ge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGZvbnQtc2l6ZTogMS41ZW07XG4gIHBhZGRpbmc6IDhweCAxZW07XG4gIGJvcmRlcjogMnB4IHNvbGlkICNlNGU0ZTQ7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLmFydGlzdF9fbmF2X19idXR0b24uYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogI0E5RTVBQztcbiAgYm9yZGVyOiAycHggc29saWQgI0E5RTVBQztcbn1cbi5hcnRpc3RfX25hdiAuc2VsZWN0X19pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAuYXJ0aXN0X19uYXZfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA2MCU7XG4gICAgbWF4LXdpZHRoOiAzMTBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgLmFydGlzdF9fbmF2IHtcbiAgICBib3gtc2hhZG93OiAzcHggMTRweCAxNnB4IDhweCAjMDAwO1xuICB9XG4gIC5hcnRpc3RfX25hdl9fY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDBlbSAwIDA7XG4gIH1cblxuICAuYXJ0aXN0X19uYXZfX2NvbnRlbnQge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAuYXJ0aXN0X19uYXYge1xuICAgIHBhZGRpbmc6IDFlbSAxZW07XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgbWFyZ2luLWxlZnQ6IDBlbTtcbiAgfVxuICAuYXJ0aXN0X19uYXZfX2NvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAwZW0gMCAwO1xuICB9XG4gIC5hcnRpc3RfX25hdl9fY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmFydGlzdF9fbmF2X19tb2JpbGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLmFydGlzdF9fbmF2LmFjdGl2ZSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59IiwiXG4kcHJpbWFyeS1mb250OiAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmO1xuJHNlY29uZGFyeS1mb250OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSSc7XG5cbi8vIENvbG9yc1xuXG4kcHJpbWFyeS1jb2xvcjogI0E5RTVBQzsiLCIkdGFibGV0LXdpZHRoOiA3NjhweDtcbiRkZXNrdG9wLXdpZHRoOiAxMDI0cHg7XG5cbkBtaXhpbiB0YWJsZXQge1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skdGFibGV0LXdpZHRofSkgYW5kIChtYXgtd2lkdGg6ICN7JGRlc2t0b3Atd2lkdGggLSAxcHh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skZGVza3RvcC13aWR0aH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbHQtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC14cyB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufSJdfQ== */"; /***/ }, /***/ "./src/app/components/artist/artist-nav/artist-nav.component.ts": /*!**********************************************************************!*\ !*** ./src/app/components/artist/artist-nav/artist-nav.component.ts ***! \**********************************************************************/ /*! exports provided: ArtistNavComponent */ /***/ function srcAppComponentsArtistArtistNavArtistNavComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArtistNavComponent", function () { return ArtistNavComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); var ArtistNavComponent = /*#__PURE__*/ function () { function ArtistNavComponent() { _classCallCheck(this, ArtistNavComponent); this.updateHistory = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.createPlaylist = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.historyList = []; this.selectedHistory = { name: 'Current', value: 'songs' }; } _createClass(ArtistNavComponent, [{ key: "ngOnInit", value: function ngOnInit() { console.log(this.navState); this.historyList = _toConsumableArray(this.navState.historyList); this.selectedHistory = this.historyList[0]; } }, { key: "getRadioValue", value: function getRadioValue(data) { var navState = { listType: this.navState.listType, selectedHistory: this.selectedHistory, historyList: this.navState.historyList }; this.updateHistory.next(navState); } }, { key: "updateArtistTrack", value: function updateArtistTrack(type) { var navState = { listType: type, selectedHistory: this.selectedHistory, historyList: this.navState.historyList }; this.updateHistory.next(navState); } }, { key: "emitCreatePlaylist", value: function emitCreatePlaylist() { this.createPlaylist.next(true); } }]); return ArtistNavComponent; }(); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], ArtistNavComponent.prototype, "navState", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], ArtistNavComponent.prototype, "updateHistory", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], ArtistNavComponent.prototype, "createPlaylist", void 0); ArtistNavComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-artist-nav', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./artist-nav.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/artist-nav/artist-nav.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./artist-nav.component.scss */ "./src/app/components/artist/artist-nav/artist-nav.component.scss")).default] })], ArtistNavComponent); /***/ }, /***/ "./src/app/components/artist/track-card/track-card.component.scss": /*!************************************************************************!*\ !*** ./src/app/components/artist/track-card/track-card.component.scss ***! \************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsArtistTrackCardTrackCardComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".artist__card {\n width: 100%;\n min-width: 200px;\n height: 150px;\n position: relative;\n overflow: hidden;\n border-radius: 5px;\n box-shadow: 5px 5px 4px 4px rgba(0, 0, 0, 0.5);\n color: white;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n.artist__card img {\n position: absolute;\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n}\n.artist__card.active {\n height: 200px;\n}\n.artist__card.active .artist__card__info {\n height: 100%;\n}\n.artist__card span {\n margin-top: 2px;\n}\n.artist__card__info {\n height: 60px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n position: absolute;\n width: 100%;\n background: rgba(0, 0, 0, 0.55);\n border-radius: 5px;\n bottom: 0;\n box-sizing: border-box;\n padding: 1rem 0.5rem;\n font-size: 1.2rem;\n}\n.artist__card__info--secondary, .artist__card__info--primary {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n margin-left: 1rem;\n}\n.artist__card__info--primary {\n font-size: 1.2em;\n margin-bottom: 0.5rem;\n}\n.artist__card__external {\n color: white;\n cursor: pointer;\n}\n.artist__card button {\n margin-top: 1em;\n background: transparent;\n width: 125px;\n text-align: center;\n font-size: 12px;\n color: #fff;\n display: block;\n border-radius: 25px;\n font-weight: 700;\n margin: 1em auto 0;\n border: 2px solid #A9E5AC;\n padding: 1em;\n cursor: pointer;\n}\n@media (min-width: 768px) and (max-width: 1023px) {\n .artist__card {\n height: 150px;\n width: 200px;\n margin-bottom: 1em;\n }\n .artist__card.active {\n height: 150px;\n }\n}\n@media (min-width: 1024px) {\n .artist__card {\n height: 170px;\n width: 220px;\n margin-bottom: 1em;\n }\n .artist__card__info {\n font-size: 1rem;\n }\n .artist__card.active {\n height: 170px;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvYXJ0aXN0L3RyYWNrLWNhcmQvdHJhY2stY2FyZC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvdHJhY2stY2FyZC90cmFjay1jYXJkLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvc2Nzcy9fbWl4aW5zLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7RUFDSSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsOENBQUE7RUFDQSxZQUFBO0VBQ0EsaURBQUE7QUNGSjtBRElJO0VBQ0ksa0JBQUE7RUFDQSxvQkFBQTtLQUFBLGlCQUFBO0VBQ0EsV0FBQTtBQ0ZSO0FES0k7RUFDSSxhQUFBO0FDSFI7QURLUTtFQUNJLFlBQUE7QUNIWjtBRE9JO0VBQ0ksZUFBQTtBQ0xSO0FEUUk7RUFDSSxZQUFBO0VBQ0EsaURBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSwrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLHNCQUFBO0VBQ0Esb0JBQUE7RUFDQSxpQkFBQTtBQ05SO0FEUVE7RUFDSSxpREFBQTtFQUNBLGlCQUFBO0FDTlo7QURTUTtFQUNJLGdCQUFBO0VBQ0EscUJBQUE7QUNQWjtBRFlJO0VBQ0ksWUFBQTtFQUNBLGVBQUE7QUNWUjtBRGFJO0VBQ0ksZUFBQTtFQUNBLHVCQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLFdBQUE7RUFDQSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBQ1hSO0FDM0RFO0VGMkVFO0lBQ0ksYUFBQTtJQUNBLFlBQUE7SUFDQSxrQkFBQTtFQ1pOO0VEYU07SUFDSSxhQUFBO0VDWFY7QUFDRjtBQ2hFRTtFRmlGRTtJQUNJLGFBQUE7SUFDQSxZQUFBO0lBQ0Esa0JBQUE7RUNkTjtFRGdCTTtJQUNJLGVBQUE7RUNkVjtFRGlCTTtJQUNJLGFBQUE7RUNmVjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9hcnRpc3QvdHJhY2stY2FyZC90cmFjay1jYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5hcnRpc3RfX2NhcmQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgYm94LXNoYWRvdzogNXB4IDVweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuXG4gICAgaW1nIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBoZWlnaHQ6IDIwMHB4O1xuICAgICAgICBcbiAgICAgICAgLmFydGlzdF9fY2FyZF9faW5mbyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIH1cbiAgICBcbiAgICAmX19pbmZvIHtcbiAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuMSwuMjUsMSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjU1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBib3R0b206IDA7ICBcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgIFxuICAgICAgICBwYWRkaW5nOiAxcmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjJyZW07XG5cbiAgICAgICAgJi0tc2Vjb25kYXJ5LCAmLS1wcmltYXJ5IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tcHJpbWFyeSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmX19leHRlcm5hbCB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHdpZHRoOiAxMjVweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgbWFyZ2luOiAxZW0gYXV0byAwO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgcGFkZGluZzogMWVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG5AaW5jbHVkZSB0YWJsZXQge1xuICAgIC5hcnRpc3RfX2NhcmQge1xuICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgICAgICB3aWR0aDogMjAwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNTBweDtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5AaW5jbHVkZSBkZXNrdG9wIHtcbiAgICAuYXJ0aXN0X19jYXJkIHtcbiAgICAgICAgaGVpZ2h0OiAxNzBweDtcbiAgICAgICAgd2lkdGg6IDIyMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxZW07XG5cbiAgICAgICAgJl9faW5mbyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDE3MHB4O1xuICAgICAgICB9XG4gICAgfVxuXG59IiwiLmFydGlzdF9fY2FyZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IDE1MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogNXB4IDVweCA0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgY29sb3I6IHdoaXRlO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmFydGlzdF9fY2FyZCBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbn1cbi5hcnRpc3RfX2NhcmQuYWN0aXZlIHtcbiAgaGVpZ2h0OiAyMDBweDtcbn1cbi5hcnRpc3RfX2NhcmQuYWN0aXZlIC5hcnRpc3RfX2NhcmRfX2luZm8ge1xuICBoZWlnaHQ6IDEwMCU7XG59XG4uYXJ0aXN0X19jYXJkIHNwYW4ge1xuICBtYXJnaW4tdG9wOiAycHg7XG59XG4uYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJvdHRvbTogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZzogMXJlbSAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xufVxuLmFydGlzdF9fY2FyZF9faW5mby0tc2Vjb25kYXJ5LCAuYXJ0aXN0X19jYXJkX19pbmZvLS1wcmltYXJ5IHtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG59XG4uYXJ0aXN0X19jYXJkX19pbmZvLS1wcmltYXJ5IHtcbiAgZm9udC1zaXplOiAxLjJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuLmFydGlzdF9fY2FyZF9fZXh0ZXJuYWwge1xuICBjb2xvcjogd2hpdGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hcnRpc3RfX2NhcmQgYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgd2lkdGg6IDEyNXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDFlbSBhdXRvIDA7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNBOUU1QUM7XG4gIHBhZGRpbmc6IDFlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiAxMDIzcHgpIHtcbiAgLmFydGlzdF9fY2FyZCB7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICB9XG4gIC5hcnRpc3RfX2NhcmQuYWN0aXZlIHtcbiAgICBoZWlnaHQ6IDE1MHB4O1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5hcnRpc3RfX2NhcmQge1xuICAgIGhlaWdodDogMTcwcHg7XG4gICAgd2lkdGg6IDIyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgfVxuICAuYXJ0aXN0X19jYXJkX19pbmZvIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cbiAgLmFydGlzdF9fY2FyZC5hY3RpdmUge1xuICAgIGhlaWdodDogMTcwcHg7XG4gIH1cbn0iLCIkdGFibGV0LXdpZHRoOiA3NjhweDtcbiRkZXNrdG9wLXdpZHRoOiAxMDI0cHg7XG5cbkBtaXhpbiB0YWJsZXQge1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skdGFibGV0LXdpZHRofSkgYW5kIChtYXgtd2lkdGg6ICN7JGRlc2t0b3Atd2lkdGggLSAxcHh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skZGVza3RvcC13aWR0aH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbHQtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC14cyB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufSJdfQ== */"; /***/ }, /***/ "./src/app/components/artist/track-card/track-card.component.ts": /*!**********************************************************************!*\ !*** ./src/app/components/artist/track-card/track-card.component.ts ***! \**********************************************************************/ /*! exports provided: TrackCardComponent */ /***/ function srcAppComponentsArtistTrackCardTrackCardComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TrackCardComponent", function () { return TrackCardComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/browserCheck */ "./src/app/services/browserCheck.ts"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); var TrackCardComponent = /*#__PURE__*/ function () { function TrackCardComponent(browserCheck, sanitizer) { _classCallCheck(this, TrackCardComponent); this.browserCheck = browserCheck; this.sanitizer = sanitizer; this.activeView = false; } _createClass(TrackCardComponent, [{ key: "onClick", value: function onClick(btn) { if (this.browserCheck.isDevice) { this.activeView = !this.activeView; } } }, { key: "onMouseEnter", value: function onMouseEnter(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = true; } } }, { key: "onMouseLeave", value: function onMouseLeave(btn) { if (this.browserCheck.checkIfBrowser && !this.browserCheck.isDevice) { this.activeView = false; } } }, { key: "ngOnInit", value: function ngOnInit() {} }]); return TrackCardComponent; }(); TrackCardComponent.ctorParameters = function () { return [{ type: src_app_services_browserCheck__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_3__["DomSanitizer"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], TrackCardComponent.prototype, "track", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], TrackCardComponent.prototype, "i", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('touchend', ['$event.target'])], TrackCardComponent.prototype, "onClick", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseenter', ['$event.target'])], TrackCardComponent.prototype, "onMouseEnter", null); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["HostListener"])('mouseleave', ['$event.target'])], TrackCardComponent.prototype, "onMouseLeave", null); TrackCardComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-track-card', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./track-card.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/artist/track-card/track-card.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./track-card.component.scss */ "./src/app/components/artist/track-card/track-card.component.scss")).default] })], TrackCardComponent); /***/ }, /***/ "./src/app/components/footer/footer.component.scss": /*!*********************************************************!*\ !*** ./src/app/components/footer/footer.component.scss ***! \*********************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsFooterFooterComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "footer {\n min-height: 100px;\n padding: 3em;\n background-color: rgba(0, 0, 0, 0.8);\n color: white;\n bottom: 0;\n}\nfooter a {\n color: white;\n text-decoration: none;\n margin-bottom: 1em;\n}\nfooter a:hover, footer a:focus {\n text-decoration: underline;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksaUJBQUE7RUFDQSxZQUFBO0VBQ0Esb0NBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtBQ0NKO0FEQ0k7RUFDSSxZQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtBQ0NSO0FEQ1E7RUFDSSwwQkFBQTtBQ0NaIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiZm9vdGVyIHtcbiAgICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgICBwYWRkaW5nOiAzZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwLjgpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3R0b206IDA7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFlbTtcblxuICAgICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufSIsImZvb3RlciB7XG4gIG1pbi1oZWlnaHQ6IDEwMHB4O1xuICBwYWRkaW5nOiAzZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3R0b206IDA7XG59XG5mb290ZXIgYSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5mb290ZXIgYTpob3ZlciwgZm9vdGVyIGE6Zm9jdXMge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn0iXX0= */"; /***/ }, /***/ "./src/app/components/footer/footer.component.ts": /*!*******************************************************!*\ !*** ./src/app/components/footer/footer.component.ts ***! \*******************************************************/ /*! exports provided: FooterComponent */ /***/ function srcAppComponentsFooterFooterComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FooterComponent", function () { return FooterComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); var FooterComponent = /*#__PURE__*/ function () { function FooterComponent(router) { _classCallCheck(this, FooterComponent); this.router = router; } _createClass(FooterComponent, [{ key: "ngOnInit", value: function ngOnInit() {} }]); return FooterComponent; }(); FooterComponent.ctorParameters = function () { return [{ type: _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], FooterComponent.prototype, "login", void 0); FooterComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-footer', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./footer.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/footer/footer.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./footer.component.scss */ "./src/app/components/footer/footer.component.scss")).default] })], FooterComponent); /***/ }, /***/ "./src/app/components/home/home.component.scss": /*!*****************************************************!*\ !*** ./src/app/components/home/home.component.scss ***! \*****************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsHomeHomeComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".app {\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n padding: 0 1em;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvaG9tZS9ob21lLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL2hvbWUvaG9tZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGlEQUFBO0VBQ0EsY0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9ob21lL2hvbWUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYXBwIHtcbiAgICB0cmFuc2l0aW9uOiAuM3MgY3ViaWMtYmV6aWVyKC4yNSwuMSwuMjUsMSk7XG4gICAgcGFkZGluZzogMCAxZW07XG59IiwiLmFwcCB7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG4gIHBhZGRpbmc6IDAgMWVtO1xufSJdfQ== */"; /***/ }, /***/ "./src/app/components/home/home.component.ts": /*!***************************************************!*\ !*** ./src/app/components/home/home.component.ts ***! \***************************************************/ /*! exports provided: HomeComponent */ /***/ function srcAppComponentsHomeHomeComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HomeComponent", function () { return HomeComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ../../services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var _services_infoService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ../../services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var src_app_services_obscurifyService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! src/app/services/obscurifyService */ "./src/app/services/obscurifyService.ts"); var HomeComponent = /*#__PURE__*/ function () { function HomeComponent(tokenSvc, cookieService, router, infoSvc, authService, obscurifyService) { _classCallCheck(this, HomeComponent); this.tokenSvc = tokenSvc; this.cookieService = cookieService; this.router = router; this.infoSvc = infoSvc; this.authService = authService; this.obscurifyService = obscurifyService; this.stream = null; this.bgColor = '#A9E5AC'; } _createClass(HomeComponent, [{ key: "setColor", value: function setColor(val) { switch (val) { case 1: this.bgColor = '#A9E5AC'; break; case 2: this.bgColor = '#FFA69E'; break; case 3: this.bgColor = 'rgba(0,0,0,0.9)'; break; case 4: this.bgColor = '#FFF'; break; case 5: this.bgColor = '#759398'; break; } } }, { key: "ngOnInit", value: function ngOnInit() { var _this5 = this; var cookie = this.cookieService.get('spotifyResponse'); if (cookie || this.tokenSvc.oAuthToken.spotifyToken) { this.tokenSvc.setAuthTokenCache(cookie); this.authService.authorized(); } else { this.tokenSvc.clearToken(); this.router.navigate(['login']); } var stream = this.tokenSvc.authTokens.pipe(function (x) { return _this5.infoSvc.fetchUserInfo(); }); stream.subscribe(function (user) {}); this.infoSvc.getUserStream().subscribe(function (user) { if (user.userInfo && user.allTimeObscurifyScore) { _this5.obscurifyService.getObscurifyData(user.userInfo.country, user.allTimeObscurifyScore, user.recentObscurifyScore).subscribe(function (data) { console.log('obscurify data', data); }); } }); } }]); return HomeComponent; }(); HomeComponent.ctorParameters = function () { return [{ type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }, { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"] }, { type: _services_infoService__WEBPACK_IMPORTED_MODULE_5__["InfoService"] }, { type: _services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: src_app_services_obscurifyService__WEBPACK_IMPORTED_MODULE_6__["default"] }]; }; HomeComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-home', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./home.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/home/home.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./home.component.scss */ "./src/app/components/home/home.component.scss")).default] })], HomeComponent); /***/ }, /***/ "./src/app/components/intro/intro.component.scss": /*!*******************************************************!*\ !*** ./src/app/components/intro/intro.component.scss ***! \*******************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsIntroIntroComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "nav {\n max-width: 1024px;\n padding: 1em 1em;\n margin: 0 auto;\n color: rgba(0, 0, 0, 0.5);\n}\nnav i {\n font-size: 2em;\n cursor: pointer;\n}\nnav button {\n background: none;\n border: none;\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 1em;\n font-weight: bold;\n}\nnav button i {\n margin-left: 5px;\n}\n.welcome {\n width: 100%;\n font-size: 2em;\n padding-top: 140px;\n text-align: center;\n}\n.welcome span {\n color: #A9E5AC;\n}\n.profile {\n width: 100%;\n padding: 140px 0;\n text-align: center;\n}\n.profile__image {\n width: 100px;\n height: 100px;\n margin: 0 auto 2em;\n background: #e5e5e5;\n border-radius: 50%;\n}\n.profile__image img {\n width: 100%;\n height: auto;\n border-radius: 50%;\n}\n.profile__header {\n max-width: 600px;\n text-align: center;\n font-size: 2em;\n}\n@media (min-width: 1024px) {\n .profile__image {\n width: 200px;\n height: 200px;\n }\n .profile__header {\n font-size: 3em;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvaW50cm8vaW50cm8uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvaW50cm8vaW50cm8uY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL192YXJpYWJsZXMuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBO0VBQ0ksaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFFQSx5QkFBQTtBQ0hKO0FES0k7RUFDSSxjQUFBO0VBQ0EsZUFBQTtBQ0hSO0FETUk7RUFDSSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtBQ0pSO0FES1E7RUFDSSxnQkFBQTtBQ0haO0FEUUE7RUFDSSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7QUNMSjtBRE1JO0VBQ0ksY0U3QlE7QUR5QmhCO0FEUUE7RUFDSSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtBQ0xKO0FET0k7RUFDSSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ0xSO0FET1E7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0FDTFo7QURTSTtFQUNJLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0FDUFI7QUU1Q0U7RUgyRE07SUFDSSxZQUFBO0lBQ0EsYUFBQTtFQ1hWO0VEY007SUFDSSxjQUFBO0VDWlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvaW50cm8vaW50cm8uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0ICd2YXJpYWJsZXMnO1xuQGltcG9ydCAnbWl4aW5zJztcblxubmF2IHtcbiAgICBtYXgtd2lkdGg6IDEwMjRweDtcbiAgICBwYWRkaW5nOiAxZW0gMWVtO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuXG4gICAgY29sb3I6IHJnYmEoMCwwLDAsMC41KTtcblxuICAgIGkge1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBpIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi53ZWxjb21lIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgICBwYWRkaW5nLXRvcDogMTQwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHNwYW4ge1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29sb3I7XG4gICAgfVxufVxuXG4ucHJvZmlsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTQwcHggMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmX19pbWFnZSB7XG4gICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gMmVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZTVlNWU1O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9faGVhZGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICB9XG59XG5cblxuQGluY2x1ZGUgZGVza3RvcCB7XG5cbiAgICAucHJvZmlsZSB7XG4gICAgICAgICZfX2ltYWdlIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAmX19oZWFkZXIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIH1cbiAgICB9XG59IiwibmF2IHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIHBhZGRpbmc6IDFlbSAxZW07XG4gIG1hcmdpbjogMCBhdXRvO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xufVxubmF2IGkge1xuICBmb250LXNpemU6IDJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxubmF2IGJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxubmF2IGJ1dHRvbiBpIHtcbiAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cblxuLndlbGNvbWUge1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1zaXplOiAyZW07XG4gIHBhZGRpbmctdG9wOiAxNDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLndlbGNvbWUgc3BhbiB7XG4gIGNvbG9yOiAjQTlFNUFDO1xufVxuXG4ucHJvZmlsZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxNDBweCAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ucHJvZmlsZV9faW1hZ2Uge1xuICB3aWR0aDogMTAwcHg7XG4gIGhlaWdodDogMTAwcHg7XG4gIG1hcmdpbjogMCBhdXRvIDJlbTtcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuLnByb2ZpbGVfX2ltYWdlIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cbi5wcm9maWxlX19oZWFkZXIge1xuICBtYXgtd2lkdGg6IDYwMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5wcm9maWxlX19pbWFnZSB7XG4gICAgd2lkdGg6IDIwMHB4O1xuICAgIGhlaWdodDogMjAwcHg7XG4gIH1cbiAgLnByb2ZpbGVfX2hlYWRlciB7XG4gICAgZm9udC1zaXplOiAzZW07XG4gIH1cbn0iLCJcbiRwcmltYXJ5LWZvbnQ6ICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7XG4kc2Vjb25kYXJ5LWZvbnQ6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJztcblxuLy8gQ29sb3JzXG5cbiRwcmltYXJ5LWNvbG9yOiAjQTlFNUFDOyIsIiR0YWJsZXQtd2lkdGg6IDc2OHB4O1xuJGRlc2t0b3Atd2lkdGg6IDEwMjRweDtcblxuQG1peGluIHRhYmxldCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyR0YWJsZXQtd2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skZGVza3RvcC13aWR0aCAtIDFweH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRofSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBsdC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk1OXB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LXhzIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59Il19 */"; /***/ }, /***/ "./src/app/components/intro/intro.component.ts": /*!*****************************************************!*\ !*** ./src/app/components/intro/intro.component.ts ***! \*****************************************************/ /*! exports provided: IntroComponent */ /***/ function srcAppComponentsIntroIntroComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IntroComponent", function () { return IntroComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! src/app/services/infoService */ "./src/app/services/infoService.ts"); var IntroComponent = /*#__PURE__*/ function () { function IntroComponent(element, intersectionObserverService, infoSvc) { _classCallCheck(this, IntroComponent); this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); } _createClass(IntroComponent, [{ key: "updateAppBackgroundColor", value: function updateAppBackgroundColor() { this.appColor.emit(4); } }, { key: "ngOnInit", value: function ngOnInit() { var _this6 = this; this.infoSvc.getUserStream().subscribe(function (user) { console.log('user', user); if (user.userInfo) { _this6.userImage = user.userInfo.images[0].url; _this6.userName = user.userInfo.display_name; } }); } }, { key: "ngAfterViewInit", value: function ngAfterViewInit() { var _this7 = this; this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.70 }); this.intersectionObserverSubs = this.intersectionObserverService.getSubject().subscribe(function (el) { if (el.isIntersecting) { _this7.updateAppBackgroundColor(); } }); } }]); return IntroComponent; }(); IntroComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__["InfoService"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], IntroComponent.prototype, "appColor", void 0); IntroComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-intro', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./intro.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/intro/intro.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./intro.component.scss */ "./src/app/components/intro/intro.component.scss")).default] })], IntroComponent); /***/ }, /***/ "./src/app/components/login/login.component.scss": /*!*******************************************************!*\ !*** ./src/app/components/login/login.component.scss ***! \*******************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsLoginLoginComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = "main {\n background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url('login-background.jpg');\n background-size: cover;\n background-position: center;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: white;\n}\nmain .login__container {\n width: 320px;\n}\nmain h1 {\n color: #fff;\n font-size: 48px;\n color: #FFFFFF;\n letter-spacing: 1.92px;\n text-align: center;\n top: 118px;\n font-weight: bold;\n margin-bottom: 1rem;\n}\nmain h1 span {\n color: #65D26E;\n font-size: inherit;\n letter-spacing: 1.92px;\n text-align: center;\n font-weight: bold;\n}\nmain p {\n margin-bottom: 3rem;\n}\nmain .login {\n width: 258px;\n height: 70px;\n margin: 0 auto;\n border-radius: 2px;\n background: #65d26e;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\nmain .login:hover .login__btn, main .login :focus .login__btn {\n opacity: 0.7;\n}\nmain .login__btn {\n font-size: 16px;\n color: #FFFFFF;\n letter-spacing: 1.49px;\n text-align: center;\n text-decoration: none;\n font-weight: bold;\n background: transparent;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxnR0FBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFFQSxZQUFBO0FDQUo7QURFSTtFQUNJLFlBQUE7QUNBUjtBREdJO0VBQ0ksV0FBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FDRFI7QURFUTtFQUNFLGNBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtBQ0FWO0FESU07RUFDSSxtQkFBQTtBQ0ZWO0FES0k7RUFDSSxZQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0FDSFI7QURNWTtFQUNJLFlBQUE7QUNKaEI7QURTSTtFQUNJLGVBQUE7RUFDQSxjQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSx1QkFBQTtBQ1BSIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIm1haW4ge1xuICAgIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHJnYmEoMCwgMCwgMCwgMC44KSwgcmdiYSgwLCAwLCAwLCAwLjgpKSwgdXJsKC4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvYXBwL2xvZ2luLWJhY2tncm91bmQuanBnKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBjb2xvcjogd2hpdGU7XG5cbiAgICAubG9naW5fX2NvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAzMjBweDtcbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgIGNvbG9yOiAjRkZGRkZGO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMS45MnB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHRvcDogMTE4cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBjb2xvcjogIzY1RDI2RTtcbiAgICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuOTJweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gICAgICB9XG5cbiAgICAubG9naW4ge1xuICAgICAgICB3aWR0aDogMjU4cHg7XG4gICAgICAgIGhlaWdodDogNzBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgYmFja2dyb3VuZDogIzY1ZDI2ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgXG4gICAgICAgICY6aG92ZXIsOmZvY3VzIHtcbiAgICAgICAgICAgIC5sb2dpbl9fYnRuIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5sb2dpbl9fYnRuIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDEuNDlweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cbiIsIm1haW4ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQocmdiYSgwLCAwLCAwLCAwLjgpLCByZ2JhKDAsIDAsIDAsIDAuOCkpLCB1cmwoLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9hcHAvbG9naW4tYmFja2dyb3VuZC5qcGcpO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogd2hpdGU7XG59XG5tYWluIC5sb2dpbl9fY29udGFpbmVyIHtcbiAgd2lkdGg6IDMyMHB4O1xufVxubWFpbiBoMSB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDQ4cHg7XG4gIGNvbG9yOiAjRkZGRkZGO1xuICBsZXR0ZXItc3BhY2luZzogMS45MnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRvcDogMTE4cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxubWFpbiBoMSBzcGFuIHtcbiAgY29sb3I6ICM2NUQyNkU7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuOTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbm1haW4gcCB7XG4gIG1hcmdpbi1ib3R0b206IDNyZW07XG59XG5tYWluIC5sb2dpbiB7XG4gIHdpZHRoOiAyNThweDtcbiAgaGVpZ2h0OiA3MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kOiAjNjVkMjZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxubWFpbiAubG9naW46aG92ZXIgLmxvZ2luX19idG4sIG1haW4gLmxvZ2luIDpmb2N1cyAubG9naW5fX2J0biB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbm1haW4gLmxvZ2luX19idG4ge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAjRkZGRkZGO1xuICBsZXR0ZXItc3BhY2luZzogMS40OXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufSJdfQ== */"; /***/ }, /***/ "./src/app/components/login/login.component.ts": /*!*****************************************************!*\ !*** ./src/app/components/login/login.component.ts ***! \*****************************************************/ /*! exports provided: LoginComponent */ /***/ function srcAppComponentsLoginLoginComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginComponent", function () { return LoginComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _services_spotifyAuth_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ../../services/spotifyAuth/index */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); var LoginComponent = /*#__PURE__*/ function () { function LoginComponent(authService, tokenSvc, router, cookieService) { _classCallCheck(this, LoginComponent); this.authService = authService; this.tokenSvc = tokenSvc; this.router = router; this.cookieService = cookieService; } _createClass(LoginComponent, [{ key: "ngOnInit", value: function ngOnInit() { if (!!this.tokenSvc.oAuthToken.spotifyToken) { this.router.navigate(['home']); } } }, { key: "login", value: function login() { var cookie = this.cookieService.get('spotifyResponse'); if (cookie) { // this.tokenSvc.setAuthTokenCache(cookie); this.authService.authorized(); } else { this.authService.authorize(); } } }]); return LoginComponent; }(); LoginComponent.ctorParameters = function () { return [{ type: _services_spotifyAuth_index__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: _services_spotifyAuth_index__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"] }, { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_4__["CookieService"] }]; }; LoginComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-login', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./login.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/login/login.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./login.component.scss */ "./src/app/components/login/login.component.scss")).default] })], LoginComponent); /***/ }, /***/ "./src/app/components/moods-graph/moods-graph.component.scss": /*!*******************************************************************!*\ !*** ./src/app/components/moods-graph/moods-graph.component.scss ***! \*******************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsMoodsGraphMoodsGraphComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.moods-graph {\n max-width: 620px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n padding: 5rem 0;\n opacity: 0;\n transform: translateY(100px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n align-items: flex-start;\n}\n\n.moods-graph.show {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.moods-graph__container {\n margin-top: 1em;\n}\n\n.moods-graph__container--right {\n align-self: flex-end;\n}\n\n.moods-graph__container--right h3 {\n text-align: right;\n}\n\n.moods-graph__content {\n margin-top: 2em;\n}\n\n.moods-graph__content h3 {\n font-size: 36px;\n}\n\n.moods-graph__card {\n padding: 1em;\n background-color: white;\n margin-top: 1em;\n display: flex;\n border-radius: 5px;\n}\n\n.moods-graph__card--reverse {\n flex-direction: row-reverse;\n}\n\n.moods-graph__card__header {\n font-size: 24px;\n margin-bottom: 0.5em;\n}\n\n.moods-graph__card__paragraph {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\";\n font-weight: normal;\n}\n\n.moods-graph__card__container {\n width: 50%;\n}\n\n.equalizer-container {\n height: 100px;\n display: flex;\n align-items: center;\n position: relative;\n justify-content: center;\n}\n\n.equalizer-container .bar {\n width: 8px;\n min-height: 10px;\n margin-right: 2px;\n transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);\n will-change: transform;\n transform: scaleY(1);\n position: relative;\n}\n\n.equalizer-container.level-one .bar:nth-child(0) {\n background-color: #81D6E3;\n -webkit-animation: grow-one0 2134ms alternate infinite;\n animation: grow-one0 2134ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(1) {\n background-color: #81D6E3;\n -webkit-animation: grow-one1 2198ms alternate infinite;\n animation: grow-one1 2198ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(2) {\n background-color: #81D6E3;\n -webkit-animation: grow-one2 1651ms alternate infinite;\n animation: grow-one2 1651ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(3) {\n background-color: #81D6E3;\n -webkit-animation: grow-one3 1676ms alternate infinite;\n animation: grow-one3 1676ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(4) {\n background-color: #81D6E3;\n -webkit-animation: grow-one4 1690ms alternate infinite;\n animation: grow-one4 1690ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(5) {\n background-color: #81D6E3;\n -webkit-animation: grow-one5 2043ms alternate infinite;\n animation: grow-one5 2043ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(6) {\n background-color: #81D6E3;\n -webkit-animation: grow-one6 1642ms alternate infinite;\n animation: grow-one6 1642ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(7) {\n background-color: #81D6E3;\n -webkit-animation: grow-one7 1833ms alternate infinite;\n animation: grow-one7 1833ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(8) {\n background-color: #81D6E3;\n -webkit-animation: grow-one8 1861ms alternate infinite;\n animation: grow-one8 1861ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(9) {\n background-color: #81D6E3;\n -webkit-animation: grow-one9 1945ms alternate infinite;\n animation: grow-one9 1945ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(10) {\n background-color: #81D6E3;\n -webkit-animation: grow-one10 1960ms alternate infinite;\n animation: grow-one10 1960ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(11) {\n background-color: #81D6E3;\n -webkit-animation: grow-one11 2068ms alternate infinite;\n animation: grow-one11 2068ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-one .bar:nth-child(12) {\n background-color: #81D6E3;\n -webkit-animation: grow-one12 1708ms alternate infinite;\n animation: grow-one12 1708ms alternate infinite;\n}\n\n@-webkit-keyframes grow-one12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-one12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-two0 1611ms alternate infinite;\n animation: grow-two0 1611ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-two1 1844ms alternate infinite;\n animation: grow-two1 1844ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-two2 1744ms alternate infinite;\n animation: grow-two2 1744ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-two3 2052ms alternate infinite;\n animation: grow-two3 2052ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-two4 2139ms alternate infinite;\n animation: grow-two4 2139ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-two5 1506ms alternate infinite;\n animation: grow-two5 1506ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-two5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-two6 2051ms alternate infinite;\n animation: grow-two6 2051ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-two7 2113ms alternate infinite;\n animation: grow-two7 2113ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-two8 1621ms alternate infinite;\n animation: grow-two8 1621ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two8 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two8 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-two9 1681ms alternate infinite;\n animation: grow-two9 1681ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two9 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-two10 1964ms alternate infinite;\n animation: grow-two10 1964ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two10 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-two11 1671ms alternate infinite;\n animation: grow-two11 1671ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-two .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-two12 1830ms alternate infinite;\n animation: grow-two12 1830ms alternate infinite;\n}\n\n@-webkit-keyframes grow-two12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-two12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-three0 2088ms alternate infinite;\n animation: grow-three0 2088ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-three1 2053ms alternate infinite;\n animation: grow-three1 2053ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-three2 1922ms alternate infinite;\n animation: grow-three2 1922ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-three3 2158ms alternate infinite;\n animation: grow-three3 2158ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three3 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three3 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-three4 1733ms alternate infinite;\n animation: grow-three4 1733ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-three5 1710ms alternate infinite;\n animation: grow-three5 1710ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-three6 1600ms alternate infinite;\n animation: grow-three6 1600ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-three7 1665ms alternate infinite;\n animation: grow-three7 1665ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three7 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three7 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-three8 1633ms alternate infinite;\n animation: grow-three8 1633ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-three8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-three9 1731ms alternate infinite;\n animation: grow-three9 1731ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-three10 2051ms alternate infinite;\n animation: grow-three10 2051ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-three11 2098ms alternate infinite;\n animation: grow-three11 2098ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three11 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-three11 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-three .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-three12 2175ms alternate infinite;\n animation: grow-three12 2175ms alternate infinite;\n}\n\n@-webkit-keyframes grow-three12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-three12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-four0 1901ms alternate infinite;\n animation: grow-four0 1901ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four0 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four0 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-four1 2010ms alternate infinite;\n animation: grow-four1 2010ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-four1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-four2 2187ms alternate infinite;\n animation: grow-four2 2187ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-four3 1836ms alternate infinite;\n animation: grow-four3 1836ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-four4 1554ms alternate infinite;\n animation: grow-four4 1554ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-four4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-four5 1700ms alternate infinite;\n animation: grow-four5 1700ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-four5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-four6 1750ms alternate infinite;\n animation: grow-four6 1750ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four6 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four6 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-four7 1561ms alternate infinite;\n animation: grow-four7 1561ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four7 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four7 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-four8 1648ms alternate infinite;\n animation: grow-four8 1648ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-four9 1551ms alternate infinite;\n animation: grow-four9 1551ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four9 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four9 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-four10 1716ms alternate infinite;\n animation: grow-four10 1716ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four10 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-four10 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-four11 2099ms alternate infinite;\n animation: grow-four11 2099ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-four11 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-four .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-four12 1779ms alternate infinite;\n animation: grow-four12 1779ms alternate infinite;\n}\n\n@-webkit-keyframes grow-four12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-four12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-five0 1967ms alternate infinite;\n animation: grow-five0 1967ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five0 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-five1 1680ms alternate infinite;\n animation: grow-five1 1680ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five1 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-five1 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-five2 1849ms alternate infinite;\n animation: grow-five2 1849ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five2 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-five3 1960ms alternate infinite;\n animation: grow-five3 1960ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five3 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-five4 1926ms alternate infinite;\n animation: grow-five4 1926ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five4 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-five5 1819ms alternate infinite;\n animation: grow-five5 1819ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five5 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-five6 1536ms alternate infinite;\n animation: grow-five6 1536ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-five7 2028ms alternate infinite;\n animation: grow-five7 2028ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-five7 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-five8 1967ms alternate infinite;\n animation: grow-five8 1967ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-five8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-five9 1609ms alternate infinite;\n animation: grow-five9 1609ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-five9 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-five10 1720ms alternate infinite;\n animation: grow-five10 1720ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five10 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-five10 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-five11 1916ms alternate infinite;\n animation: grow-five11 1916ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five11 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-five11 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-five .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-five12 1964ms alternate infinite;\n animation: grow-five12 1964ms alternate infinite;\n}\n\n@-webkit-keyframes grow-five12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-five12 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(2);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-six0 1640ms alternate infinite;\n animation: grow-six0 1640ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six0 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-six0 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-six1 1807ms alternate infinite;\n animation: grow-six1 1807ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-six1 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-six2 1576ms alternate infinite;\n animation: grow-six2 1576ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-six2 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-six3 1695ms alternate infinite;\n animation: grow-six3 1695ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six3 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-six3 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-six4 2167ms alternate infinite;\n animation: grow-six4 2167ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-six4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-six5 2184ms alternate infinite;\n animation: grow-six5 2184ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six5 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-six5 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-six6 1993ms alternate infinite;\n animation: grow-six6 1993ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-six6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(4);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-six7 2157ms alternate infinite;\n animation: grow-six7 2157ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-six7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-six8 1606ms alternate infinite;\n animation: grow-six8 1606ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-six8 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-six9 2055ms alternate infinite;\n animation: grow-six9 2055ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-six9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-six10 1541ms alternate infinite;\n animation: grow-six10 1541ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six10 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-six10 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-six11 1878ms alternate infinite;\n animation: grow-six11 1878ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-six11 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-six .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-six12 1727ms alternate infinite;\n animation: grow-six12 1727ms alternate infinite;\n}\n\n@-webkit-keyframes grow-six12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-six12 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-seven0 1895ms alternate infinite;\n animation: grow-seven0 1895ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-seven0 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-seven1 1584ms alternate infinite;\n animation: grow-seven1 1584ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-seven2 1784ms alternate infinite;\n animation: grow-seven2 1784ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven2 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-seven2 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-seven3 2162ms alternate infinite;\n animation: grow-seven3 2162ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-seven3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-seven4 1930ms alternate infinite;\n animation: grow-seven4 1930ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven4 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven4 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(1);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-seven5 1578ms alternate infinite;\n animation: grow-seven5 1578ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-seven5 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-seven6 1561ms alternate infinite;\n animation: grow-seven6 1561ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-seven6 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(6);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-seven7 1685ms alternate infinite;\n animation: grow-seven7 1685ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-seven7 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-seven8 1815ms alternate infinite;\n animation: grow-seven8 1815ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven8 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-seven9 1935ms alternate infinite;\n animation: grow-seven9 1935ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-seven9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-seven10 1599ms alternate infinite;\n animation: grow-seven10 1599ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven10 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n@keyframes grow-seven10 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-seven11 2083ms alternate infinite;\n animation: grow-seven11 2083ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-seven11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-seven .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-seven12 1979ms alternate infinite;\n animation: grow-seven12 1979ms alternate infinite;\n}\n\n@-webkit-keyframes grow-seven12 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-seven12 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-eight0 2147ms alternate infinite;\n animation: grow-eight0 2147ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight0 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-eight0 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-eight1 2087ms alternate infinite;\n animation: grow-eight1 2087ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight1 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-eight1 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-eight2 2145ms alternate infinite;\n animation: grow-eight2 2145ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight2 {\n 0% {\n transform: scaleY(7);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-eight2 {\n 0% {\n transform: scaleY(7);\n }\n 10% {\n transform: scaleY(8);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-eight3 1850ms alternate infinite;\n animation: grow-eight3 1850ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-eight3 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(4);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-eight4 1737ms alternate infinite;\n animation: grow-eight4 1737ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight4 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(7);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-eight5 2088ms alternate infinite;\n animation: grow-eight5 2088ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight5 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(9);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-eight5 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(9);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-eight6 2033ms alternate infinite;\n animation: grow-eight6 2033ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n@keyframes grow-eight6 {\n 0% {\n transform: scaleY(2);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(9);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-eight7 2008ms alternate infinite;\n animation: grow-eight7 2008ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight7 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-eight7 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-eight8 1853ms alternate infinite;\n animation: grow-eight8 1853ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight8 {\n 0% {\n transform: scaleY(4);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(3);\n }\n 50% {\n transform: scaleY(7);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(5);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-eight9 1586ms alternate infinite;\n animation: grow-eight9 1586ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n@keyframes grow-eight9 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(3);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(8);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-eight10 2005ms alternate infinite;\n animation: grow-eight10 2005ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight10 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight10 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-eight11 2095ms alternate infinite;\n animation: grow-eight11 2095ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(9);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-eight11 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(9);\n }\n 20% {\n transform: scaleY(6);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(4);\n }\n 90% {\n transform: scaleY(8);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-eight .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-eight12 1975ms alternate infinite;\n animation: grow-eight12 1975ms alternate infinite;\n}\n\n@-webkit-keyframes grow-eight12 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-eight12 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(6);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(0) {\n background-color: #1db951;\n -webkit-animation: grow-nine0 1921ms alternate infinite;\n animation: grow-nine0 1921ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine0 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n@keyframes grow-nine0 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(5);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(9);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(2);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(1) {\n background-color: #1db951;\n -webkit-animation: grow-nine1 2185ms alternate infinite;\n animation: grow-nine1 2185ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine1 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(3);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(1);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(6);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(2) {\n background-color: #1db951;\n -webkit-animation: grow-nine2 1736ms alternate infinite;\n animation: grow-nine2 1736ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n@keyframes grow-nine2 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(4);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(5);\n }\n 60% {\n transform: scaleY(9);\n }\n 70% {\n transform: scaleY(3);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(1);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(3) {\n background-color: #1db951;\n -webkit-animation: grow-nine3 1989ms alternate infinite;\n animation: grow-nine3 1989ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n@keyframes grow-nine3 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(5);\n }\n 40% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(3);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(4) {\n background-color: #1db951;\n -webkit-animation: grow-nine4 1673ms alternate infinite;\n animation: grow-nine4 1673ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n@keyframes grow-nine4 {\n 0% {\n transform: scaleY(1);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(2);\n }\n 60% {\n transform: scaleY(5);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(5);\n }\n 100% {\n transform: scaleY(6);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(5) {\n background-color: #1db951;\n -webkit-animation: grow-nine5 1825ms alternate infinite;\n animation: grow-nine5 1825ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine5 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(10);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n@keyframes grow-nine5 {\n 0% {\n transform: scaleY(9);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(8);\n }\n 30% {\n transform: scaleY(3);\n }\n 40% {\n transform: scaleY(4);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(10);\n }\n 70% {\n transform: scaleY(6);\n }\n 80% {\n transform: scaleY(10);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(5);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(6) {\n background-color: #1db951;\n -webkit-animation: grow-nine6 1887ms alternate infinite;\n animation: grow-nine6 1887ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine6 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine6 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(4);\n }\n 20% {\n transform: scaleY(2);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(3);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(7);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(7) {\n background-color: #1db951;\n -webkit-animation: grow-nine7 2107ms alternate infinite;\n animation: grow-nine7 2107ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine7 {\n 0% {\n transform: scaleY(10);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(10);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine7 {\n 0% {\n transform: scaleY(10);\n }\n 10% {\n transform: scaleY(3);\n }\n 20% {\n transform: scaleY(7);\n }\n 30% {\n transform: scaleY(8);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(10);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(9);\n }\n 80% {\n transform: scaleY(7);\n }\n 90% {\n transform: scaleY(7);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(8) {\n background-color: #1db951;\n -webkit-animation: grow-nine8 2015ms alternate infinite;\n animation: grow-nine8 2015ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine8 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine8 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(1);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(7);\n }\n 40% {\n transform: scaleY(7);\n }\n 50% {\n transform: scaleY(6);\n }\n 60% {\n transform: scaleY(2);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(4);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(9) {\n background-color: #1db951;\n -webkit-animation: grow-nine9 1937ms alternate infinite;\n animation: grow-nine9 1937ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine9 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n@keyframes grow-nine9 {\n 0% {\n transform: scaleY(8);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(1);\n }\n 30% {\n transform: scaleY(2);\n }\n 40% {\n transform: scaleY(8);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(7);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(8);\n }\n 90% {\n transform: scaleY(1);\n }\n 100% {\n transform: scaleY(7);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(10) {\n background-color: #1db951;\n -webkit-animation: grow-nine10 1928ms alternate infinite;\n animation: grow-nine10 1928ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(10);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n@keyframes grow-nine10 {\n 0% {\n transform: scaleY(3);\n }\n 10% {\n transform: scaleY(2);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(10);\n }\n 40% {\n transform: scaleY(9);\n }\n 50% {\n transform: scaleY(8);\n }\n 60% {\n transform: scaleY(1);\n }\n 70% {\n transform: scaleY(10);\n }\n 80% {\n transform: scaleY(3);\n }\n 90% {\n transform: scaleY(3);\n }\n 100% {\n transform: scaleY(9);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(11) {\n background-color: #1db951;\n -webkit-animation: grow-nine11 1913ms alternate infinite;\n animation: grow-nine11 1913ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine11 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n@keyframes grow-nine11 {\n 0% {\n transform: scaleY(6);\n }\n 10% {\n transform: scaleY(5);\n }\n 20% {\n transform: scaleY(10);\n }\n 30% {\n transform: scaleY(6);\n }\n 40% {\n transform: scaleY(5);\n }\n 50% {\n transform: scaleY(1);\n }\n 60% {\n transform: scaleY(8);\n }\n 70% {\n transform: scaleY(8);\n }\n 80% {\n transform: scaleY(1);\n }\n 90% {\n transform: scaleY(9);\n }\n 100% {\n transform: scaleY(4);\n }\n}\n\n.equalizer-container.level-nine .bar:nth-child(12) {\n background-color: #1db951;\n -webkit-animation: grow-nine12 1649ms alternate infinite;\n animation: grow-nine12 1649ms alternate infinite;\n}\n\n@-webkit-keyframes grow-nine12 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(10);\n }\n}\n\n@keyframes grow-nine12 {\n 0% {\n transform: scaleY(5);\n }\n 10% {\n transform: scaleY(6);\n }\n 20% {\n transform: scaleY(9);\n }\n 30% {\n transform: scaleY(4);\n }\n 40% {\n transform: scaleY(2);\n }\n 50% {\n transform: scaleY(4);\n }\n 60% {\n transform: scaleY(6);\n }\n 70% {\n transform: scaleY(5);\n }\n 80% {\n transform: scaleY(2);\n }\n 90% {\n transform: scaleY(2);\n }\n 100% {\n transform: scaleY(10);\n }\n}\n\n@media (min-width: 1024px) {\n .moods-graph__container {\n width: 65%;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvbW9vZHMtZ3JhcGgvbW9vZHMtZ3JhcGguY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9jb21wb25lbnRzL21vb2RzLWdyYXBoL21vb2RzLWdyYXBoLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvc2Nzcy9fdmFyaWFibGVzLnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLGNBQUE7RUFDQSw4QkFBQTtFQUNBLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsU0FBQTtBQ0RSOztBQ0RBO0VBQ0ksZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsZUFBQTtFQUNBLFVBQUE7RUFDQSw0QkFBQTtFQUNBLGlEQUFBO0VBQ0EsdUJBQUE7QURJSjs7QUNGSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRElSOztBQ0FJO0VBQ0ksZUFBQTtBREVSOztBQ0NJO0VBQ0ksb0JBQUE7QURDUjs7QUNDUTtFQUNJLGlCQUFBO0FEQ1o7O0FDR0k7RUFDSSxlQUFBO0FERFI7O0FDR1E7RUFDSSxlQUFBO0FERFo7O0FDS0k7RUFDSSxZQUFBO0VBQ0EsdUJBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0FESFI7O0FDTUk7RUFDSSwyQkFBQTtBREpSOztBQ09JO0VBQ0ksZUFBQTtFQUNBLG9CQUFBO0FETFI7O0FDUUk7RUFDSSwwREMxRFM7RUQyRFQsbUJBQUE7QUROUjs7QUNTSTtFQUNJLFVBQUE7QURQUjs7QUNZQTtF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Q0Usb0JBQUE7RUQ2eElsQjtFQzl4SWdCO0lBQ0Usb0JBQUE7RURneUlsQjtFQ2p5SWdCO0lBQ0Usb0JBQUE7RURteUlsQjtFQ3B5SWdCO0lBQ0UscUJBQUE7RURzeUlsQjtBQUNGOztBQzF5SVU7RUFFUTtJQUNFLG9CQUFBO0VEd3dJbEI7RUN6d0lnQjtJQUNFLG9CQUFBO0VEMndJbEI7RUM1d0lnQjtJQUNFLG9CQUFBO0VEOHdJbEI7RUMvd0lnQjtJQUNFLG9CQUFBO0VEaXhJbEI7RUNseElnQjtJQUNFLG9CQUFBO0VEb3hJbEI7RUNyeElnQjtJQUNFLG9CQUFBO0VEdXhJbEI7RUN4eElnQjtJQUNFLG9CQUFBO0VEMHhJbEI7RUMzeElnQjtJQUNFLG9CQUFBO0VENnhJbEI7RUM5eElnQjtJQUNFLG9CQUFBO0VEZ3lJbEI7RUNqeUlnQjtJQUNFLG9CQUFBO0VEbXlJbEI7RUNweUlnQjtJQUNFLHFCQUFBO0VEc3lJbEI7QUFDRjs7QUdyaEpFO0VGd1BNO0lBQ0ksVUFBQTtFRGl5SVY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbW9vZHMtZ3JhcGgvbW9vZHMtZ3JhcGguY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZGVyIHtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDhweCBibGFjayBzb2xpZDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIuaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgcGFkZGluZy1ib3R0b206IDAuMmVtO1xuICBtYXJnaW46IDA7XG59XG5cbi5tb29kcy1ncmFwaCB7XG4gIG1heC13aWR0aDogNjIwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiA1cmVtIDA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuLm1vb2RzLWdyYXBoLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5tb29kcy1ncmFwaF9fY29udGFpbmVyIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuLm1vb2RzLWdyYXBoX19jb250YWluZXItLXJpZ2h0IHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG59XG4ubW9vZHMtZ3JhcGhfX2NvbnRhaW5lci0tcmlnaHQgaDMge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5tb29kcy1ncmFwaF9fY29udGVudCB7XG4gIG1hcmdpbi10b3A6IDJlbTtcbn1cbi5tb29kcy1ncmFwaF9fY29udGVudCBoMyB7XG4gIGZvbnQtc2l6ZTogMzZweDtcbn1cbi5tb29kcy1ncmFwaF9fY2FyZCB7XG4gIHBhZGRpbmc6IDFlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuLm1vb2RzLWdyYXBoX19jYXJkLS1yZXZlcnNlIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xufVxuLm1vb2RzLWdyYXBoX19jYXJkX19oZWFkZXIge1xuICBmb250LXNpemU6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xufVxuLm1vb2RzLWdyYXBoX19jYXJkX19wYXJhZ3JhcGgge1xuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBcIlNlZ29lIFVJXCI7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG4ubW9vZHMtZ3JhcGhfX2NhcmRfX2NvbnRhaW5lciB7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi5lcXVhbGl6ZXItY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyIC5iYXIge1xuICB3aWR0aDogOHB4O1xuICBtaW4taGVpZ2h0OiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lMCAyMTM0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmUxIDIxOThtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTIgMTY1MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmUyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lMyAxNjc2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTMge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmU0IDE2OTBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lNCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTUgMjA0M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmU1IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lNiAxNjQybXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTYge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmU3IDE4MzNtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lNyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTggMTg2MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmU4IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lOSAxOTQ1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW9uZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODFENkUzO1xuICBhbmltYXRpb246IGdyb3ctb25lMTAgMTk2MG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1vbmUxMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtb25lIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7XG4gIGFuaW1hdGlvbjogZ3Jvdy1vbmUxMSAyMDY4bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW9uZTExIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1vbmUgLmJhcjpudGgtY2hpbGQoMTIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxRDZFMztcbiAgYW5pbWF0aW9uOiBncm93LW9uZTEyIDE3MDhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctb25lMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCgwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d28wIDE2MTFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzEgMTg0NG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d28xIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvMiAxNzQ0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCgzKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d28zIDIwNTJtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvMyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzQgMjEzOW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d280IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoNSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvNSAxNTA2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCg2KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d282IDIwNTFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvNiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDcpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzcgMjExM21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d283IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoOCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvOCAxNjIxbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzgge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCg5KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d285IDE2ODFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvOSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdHdvIC5iYXI6bnRoLWNoaWxkKDEwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10d28xMCAxOTY0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXR3bzEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10d28gLmJhcjpudGgtY2hpbGQoMTEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXR3bzExIDE2NzFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdHdvMTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXR3byAuYmFyOm50aC1jaGlsZCgxMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdHdvMTIgMTgzMG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10d28xMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWUwIDIwODhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWUwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTEgMjA1M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlMiAxOTIybXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWUzIDIxNThtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWUzIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTQgMTczM21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTQge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlNSAxNzEwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlNSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWU2IDE2MDBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWU2IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTcgMTY2NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTcge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlOCAxNjMzbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlOCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWU5IDE3MzFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWU5IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC10aHJlZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctdGhyZWUxMCAyMDUxbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXRocmVlMTAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXRocmVlIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy10aHJlZTExIDIwOThtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctdGhyZWUxMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtdGhyZWUgLmJhcjpudGgtY2hpbGQoMTIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXRocmVlMTIgMjE3NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy10aHJlZTEyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXIwIDE5MDFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjEgMjAxMG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCgyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyMiAyMTg3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXIyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXIzIDE4MzZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjMge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjQgMTU1NG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyNCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyNSAxNzAwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXI1IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDYpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXI2IDE3NTBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjYge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoNykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjcgMTU2MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyNyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCg4KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyOCAxNjQ4bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXI4IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDkpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXI5IDE1NTFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZvdXIgLmJhcjpudGgtY2hpbGQoMTApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZvdXIxMCAxNzE2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZvdXIxMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZm91ciAuYmFyOm50aC1jaGlsZCgxMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZm91cjExIDIwOTltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZm91cjExIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1mb3VyIC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1mb3VyMTIgMTc3OW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1mb3VyMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTAgMTk2N21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlMSAxNjgwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmUxIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmUyIDE4NDltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTMgMTk2MG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlMyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlNCAxOTI2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmU0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmU1IDE4MTltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTYgMTUzNm1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlNiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlNyAyMDI4bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmU3IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDgpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmU4IDE5NjdtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTgge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTkgMTYwOW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlOSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZml2ZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZml2ZTEwIDE3MjBtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZml2ZTEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1maXZlIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1maXZlMTEgMTkxNm1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1maXZlMTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWZpdmUgLmJhcjpudGgtY2hpbGQoMTIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWZpdmUxMiAxOTY0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWZpdmUxMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDAgMTY0MG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXgwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4MSAxODA3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCgyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXgyIDE1NzZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4MiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDMgMTY5NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXgzIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4NCAyMTY3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDQge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXg1IDIxODRtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4NSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDYpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDYgMTk5M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXg2IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoNykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4NyAyMTU3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDcge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCg4KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXg4IDE2MDZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4OCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDkpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDkgMjA1NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXg5IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zaXggLmJhcjpudGgtY2hpbGQoMTApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNpeDEwIDE1NDFtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2l4MTAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNpeCAuYmFyOm50aC1jaGlsZCgxMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2l4MTEgMTg3OG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zaXgxMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2l4IC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zaXgxMiAxNzI3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNpeDEyIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCgwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjAgMTg5NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjAge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuMSAxNTg0bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuMSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW4yIDE3ODRtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW4yIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCgzKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjMgMjE2Mm1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjMge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuNCAxOTMwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuNCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoNSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW41IDE1NzhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW41IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCg2KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjYgMTU2MW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjYge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDcpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuNyAxNjg1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuNyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoOCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW44IDE4MTVtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW44IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCg5KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjkgMTkzNW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLXNldmVuIC5iYXI6bnRoLWNoaWxkKDEwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1zZXZlbjEwIDE1OTltcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctc2V2ZW4xMCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtc2V2ZW4gLmJhcjpudGgtY2hpbGQoMTEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LXNldmVuMTEgMjA4M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1zZXZlbjExIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1zZXZlbiAuYmFyOm50aC1jaGlsZCgxMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctc2V2ZW4xMiAxOTc5bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LXNldmVuMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0MCAyMTQ3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0MCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQxIDIwODdtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQxIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCgyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDIgMjE0NW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0MyAxODUwbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0MyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQ0IDE3MzdtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQ0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDUgMjA4OG1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDYpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0NiAyMDMzbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0NiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoNykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQ3IDIwMDhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQ3IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCg4KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDggMTg1M21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDgge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDkpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0OSAxNTg2bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0OSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtZWlnaHQgLmJhcjpudGgtY2hpbGQoMTApIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LWVpZ2h0MTAgMjAwNW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1laWdodDEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg0KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1laWdodCAuYmFyOm50aC1jaGlsZCgxMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctZWlnaHQxMSAyMDk1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LWVpZ2h0MTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLWVpZ2h0IC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1laWdodDEyIDE5NzVtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctZWlnaHQxMiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCgwKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMCAxOTIxbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmUwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCgxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMSAyMTg1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmUxIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1uaW5lIC5iYXI6bnRoLWNoaWxkKDIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkYjk1MTtcbiAgYW5pbWF0aW9uOiBncm93LW5pbmUyIDE3MzZtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctbmluZTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTMgMTk4OW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lMyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCg0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lNCAxNjczbXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmU0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCg1KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lNSAxODI1bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmU1IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoNikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTYgMTg4N21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lNiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCg3KSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lNyAyMTA3bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBncm93LW5pbmU3IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoOCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTggMjAxNW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lOCB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDcpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOSk7XG4gIH1cbn1cbi5lcXVhbGl6ZXItY29udGFpbmVyLmxldmVsLW5pbmUgLmJhcjpudGgtY2hpbGQoOSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTkgMTkzN21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lOSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg4KTtcbiAgfVxuICAxMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDUpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg3KTtcbiAgfVxufVxuLmVxdWFsaXplci1jb250YWluZXIubGV2ZWwtbmluZSAuYmFyOm50aC1jaGlsZCgxMCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWRiOTUxO1xuICBhbmltYXRpb246IGdyb3ctbmluZTEwIDE5MjhtcyBhbHRlcm5hdGUgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGdyb3ctbmluZTEwIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxMCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxMCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg5KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMSk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxMCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgzKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDMpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1uaW5lIC5iYXI6bnRoLWNoaWxkKDExKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMTEgMTkxM21zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lMTEge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDEwKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDYpO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDgpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoOCk7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgxKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG59XG4uZXF1YWxpemVyLWNvbnRhaW5lci5sZXZlbC1uaW5lIC5iYXI6bnRoLWNoaWxkKDEyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxZGI5NTE7XG4gIGFuaW1hdGlvbjogZ3Jvdy1uaW5lMTIgMTY0OW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbn1cbkBrZXlmcmFtZXMgZ3Jvdy1uaW5lMTIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNSk7XG4gIH1cbiAgMTAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg2KTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDkpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSgyKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDQpO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoNik7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlWSg1KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGVZKDIpO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMik7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZVkoMTApO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm1vb2RzLWdyYXBoX19jb250YWluZXIge1xuICAgIHdpZHRoOiA2NSU7XG4gIH1cbn0iLCJAaW1wb3J0ICdjb21wb25lbnRzL2hlYWRlcic7XG5AaW1wb3J0ICdtaXhpbnMnO1xuQGltcG9ydCAndmFyaWFibGVzJztcblxuXG4ubW9vZHMtZ3JhcGgge1xuICAgIG1heC13aWR0aDogNjIwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBhZGRpbmc6IDVyZW0gMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgJi5zaG93IHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG5cbiAgICB9XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgfVxuXG4gICAgJl9fY29udGFpbmVyLS1yaWdodCB7XG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJl9fY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICAgICAgXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMzZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2NhcmQge1xuICAgICAgICBwYWRkaW5nOiAxZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB9XG5cbiAgICAmX19jYXJkLS1yZXZlcnNlIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgIH1cblxuICAgICZfX2NhcmRfX2hlYWRlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gICAgfVxuXG4gICAgJl9fY2FyZF9fcGFyYWdyYXBoIHtcbiAgICAgICAgZm9udC1mYW1pbHk6ICRzZWNvbmRhcnktZm9udDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICB9XG5cbiAgICAmX19jYXJkX19jb250YWluZXIge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgIH1cbn1cblxuXG4uZXF1YWxpemVyLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiAxMDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIC5iYXIge1xuICAgICAgd2lkdGg6IDhweDtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwcHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xuICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGVZKDEpO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4kYmFyczogMTI7XG4kbXVsdGlwbGllcjogMTAwIC8gJGJhcnM7XG5cbi5lcXVhbGl6ZXItY29udGFpbmVyIHtcblxuICAgICYubGV2ZWwtb25lIHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM4MUQ2RTM7O1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctb25lI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LW9uZSN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoI3tyYW5kb20oMSl9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxldmVsLXR3byB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRiYXJzIHtcbiAgICAgICAgICAuYmFyOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICAgICAkc2F0dXJhdGlvbjogMTAwIC0gKCgkaSArIDEpICogJG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDE0MCwgNzMlLCA0MiUsIDEpO1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctdHdvI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBrZXlmcmFtZXMgZ3Jvdy10d28jeyRpfSB7XG4gICAgICAgICAgICAgIEBmb3IgJGogZnJvbSAwIHRocm91Z2ggMTAge1xuICAgICAgICAgICAgICAgICAgI3skaiAqIDEwfSUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgje3JhbmRvbSgyKX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubGV2ZWwtdGhyZWUge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkYmFycyB7XG4gICAgICAgICAgLmJhcjpudGgtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgICAgICAgJHNhdHVyYXRpb246IDEwMCAtICgoJGkgKyAxKSAqICRtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgxNDAsIDczJSwgNDIlLCAxKTtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBncm93LXRocmVlI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBrZXlmcmFtZXMgZ3Jvdy10aHJlZSN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKCN7cmFuZG9tKDMpfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5sZXZlbC1mb3VyIHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTQwLCA3MyUsIDQyJSwgMSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZ3Jvdy1mb3VyI3skaX0gI3tyYW5kb20oNzAwKSArIDE1MDB9bXMgYWx0ZXJuYXRlIGluZmluaXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBrZXlmcmFtZXMgZ3Jvdy1mb3VyI3skaX0ge1xuICAgICAgICAgICAgICBAZm9yICRqIGZyb20gMCB0aHJvdWdoIDEwIHtcbiAgICAgICAgICAgICAgICAgICN7JGogKiAxMH0lIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoI3tyYW5kb20oNCl9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxldmVsLWZpdmUge1xuICAgICAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkYmFycyB7XG4gICAgICAgICAgLmJhcjpudGgtY2hpbGQoI3skaX0pIHtcbiAgICAgICAgICAgICAgJHNhdHVyYXRpb246IDEwMCAtICgoJGkgKyAxKSAqICRtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgxNDAsIDczJSwgNDIlLCAxKTtcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBncm93LWZpdmUjeyRpfSAje3JhbmRvbSg3MDApICsgMTUwMH1tcyBhbHRlcm5hdGUgaW5maW5pdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LWZpdmUjeyRpfSB7XG4gICAgICAgICAgICAgIEBmb3IgJGogZnJvbSAwIHRocm91Z2ggMTAge1xuICAgICAgICAgICAgICAgICAgI3skaiAqIDEwfSUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgje3JhbmRvbSg1KX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubGV2ZWwtc2l4IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTQwLCA3MyUsIDQyJSwgMSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZ3Jvdy1zaXgjeyRpfSAje3JhbmRvbSg3MDApICsgMTUwMH1tcyBhbHRlcm5hdGUgaW5maW5pdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LXNpeCN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKCN7cmFuZG9tKDYpfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5sZXZlbC1zZXZlbiB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRiYXJzIHtcbiAgICAgICAgICAuYmFyOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICAgICAkc2F0dXJhdGlvbjogMTAwIC0gKCgkaSArIDEpICogJG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDE0MCwgNzMlLCA0MiUsIDEpO1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctc2V2ZW4jeyRpfSAje3JhbmRvbSg3MDApICsgMTUwMH1tcyBhbHRlcm5hdGUgaW5maW5pdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGtleWZyYW1lcyBncm93LXNldmVuI3skaX0ge1xuICAgICAgICAgICAgICBAZm9yICRqIGZyb20gMCB0aHJvdWdoIDEwIHtcbiAgICAgICAgICAgICAgICAgICN7JGogKiAxMH0lIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoI3tyYW5kb20oOCl9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmxldmVsLWVpZ2h0IHtcbiAgICAgIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGJhcnMge1xuICAgICAgICAgIC5iYXI6bnRoLWNoaWxkKCN7JGl9KSB7XG4gICAgICAgICAgICAgICRzYXR1cmF0aW9uOiAxMDAgLSAoKCRpICsgMSkgKiAkbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTQwLCA3MyUsIDQyJSwgMSk7XG4gICAgICAgICAgICAgIGFuaW1hdGlvbjogZ3Jvdy1laWdodCN7JGl9ICN7cmFuZG9tKDcwMCkgKyAxNTAwfW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAa2V5ZnJhbWVzIGdyb3ctZWlnaHQjeyRpfSB7XG4gICAgICAgICAgICAgIEBmb3IgJGogZnJvbSAwIHRocm91Z2ggMTAge1xuICAgICAgICAgICAgICAgICAgI3skaiAqIDEwfSUge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWSgje3JhbmRvbSg5KX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICYubGV2ZWwtbmluZSB7XG4gICAgICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRiYXJzIHtcbiAgICAgICAgICAuYmFyOm50aC1jaGlsZCgjeyRpfSkge1xuICAgICAgICAgICAgICAkc2F0dXJhdGlvbjogMTAwIC0gKCgkaSArIDEpICogJG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDE0MCwgNzMlLCA0MiUsIDEpO1xuICAgICAgICAgICAgICBhbmltYXRpb246IGdyb3ctbmluZSN7JGl9ICN7cmFuZG9tKDcwMCkgKyAxNTAwfW1zIGFsdGVybmF0ZSBpbmZpbml0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAa2V5ZnJhbWVzIGdyb3ctbmluZSN7JGl9IHtcbiAgICAgICAgICAgICAgQGZvciAkaiBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgICAgICAgICAgICAgICAjeyRqICogMTB9JSB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVZKCN7cmFuZG9tKDEwKX0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5AaW5jbHVkZSBkZXNrdG9wIHtcbiAgICAubW9vZHMtZ3JhcGgge1xuICAgICAgICAmX19jb250YWluZXIge1xuICAgICAgICAgICAgd2lkdGg6IDY1JTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCJcbiRwcmltYXJ5LWZvbnQ6ICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7XG4kc2Vjb25kYXJ5LWZvbnQ6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJztcblxuLy8gQ29sb3JzXG5cbiRwcmltYXJ5LWNvbG9yOiAjQTlFNUFDOyIsIiR0YWJsZXQtd2lkdGg6IDc2OHB4O1xuJGRlc2t0b3Atd2lkdGg6IDEwMjRweDtcblxuQG1peGluIHRhYmxldCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyR0YWJsZXQtd2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skZGVza3RvcC13aWR0aCAtIDFweH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRofSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBsdC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk1OXB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LXhzIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59Il19 */"; /***/ }, /***/ "./src/app/components/moods-graph/moods-graph.component.ts": /*!*****************************************************************!*\ !*** ./src/app/components/moods-graph/moods-graph.component.ts ***! \*****************************************************************/ /*! exports provided: MoodsGraphComponent */ /***/ function srcAppComponentsMoodsGraphMoodsGraphComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MoodsGraphComponent", function () { return MoodsGraphComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); var MoodsGraphComponent = /*#__PURE__*/ function () { function MoodsGraphComponent(element, intersectionObserverService) { _classCallCheck(this, MoodsGraphComponent); this.element = element; this.intersectionObserverService = intersectionObserverService; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.show = false; } _createClass(MoodsGraphComponent, [{ key: "updateAppBackgroundColor", value: function updateAppBackgroundColor() { this.appColor.emit(2); } }, { key: "ngOnInit", value: function ngOnInit() {} }, { key: "ngAfterViewInit", value: function ngAfterViewInit() { var _this8 = this; this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.30 }); this.intersectionObserverSubs = this.intersectionObserverService.getSubject().subscribe(function (el) { if (el.isIntersecting) { _this8.updateAppBackgroundColor(); _this8.show = true; } else { _this8.show = false; } }); } }]); return MoodsGraphComponent; }(); MoodsGraphComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], MoodsGraphComponent.prototype, "appColor", void 0); MoodsGraphComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-moods-graph', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./moods-graph.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/moods-graph/moods-graph.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./moods-graph.component.scss */ "./src/app/components/moods-graph/moods-graph.component.scss")).default] })], MoodsGraphComponent); /***/ }, /***/ "./src/app/components/obscurity-graph/obscurity-graph.component.scss": /*!***************************************************************************!*\ !*** ./src/app/components/obscurity-graph/obscurity-graph.component.scss ***! \***************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsObscurityGraphObscurityGraphComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".obscurity__graph {\n margin-top: 2em;\n border-radius: 5px;\n width: 100%;\n padding: 2em 1em;\n display: flex;\n justify-content: space-around;\n align-items: flex-end;\n background-color: #A9E5AC;\n box-shadow: 22px 21px 1px 0 rgba(0, 0, 0, 0.5);\n}\n.obscurity__graph__container {\n display: flex;\n justify-content: space-around;\n align-items: flex-end;\n width: 100%;\n height: 300px;\n}\n.obscurity__graph__container .obscurity__avg-bar {\n will-change: height, opacity;\n background: #FFFBFA;\n box-shadow: 12px 12px 1px 0 rgba(0, 0, 0, 0.25);\n width: 60px;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n margin-bottom: 5rem;\n}\n.obscurity__graph__container .obscurity__avg-bar.active .bar-value {\n opacity: 1;\n visibility: visible;\n}\n.obscurity__graph__container .obscurity__avg-bar .bar-value {\n color: grey;\n opacity: 0;\n transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1) 1s;\n}\n.obscurity__graph__container .obscurity__avg-bar .bar-title {\n position: absolute;\n bottom: -5em;\n font-weight: bold;\n font-size: 14px;\n color: #000000;\n letter-spacing: 0.87px;\n text-align: center;\n height: 35px;\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(1) {\n transition: all 0.5s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(2) {\n transition: all 1s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(3) {\n transition: all 1.5s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__container .obscurity-avg-bar:nth-child(4) {\n transition: all 2s cubic-bezier(0.645, 0.045, 0.355, 1);\n}\n.obscurity__graph__info {\n text-align: left;\n padding: 0 2em;\n margin-top: 1em;\n font-size: 0.8rem;\n}\n@media (min-width: 1024px) {\n .obscurity__graph {\n max-width: 600px;\n box-sizing: border-box;\n }\n .obscurity__graph__info {\n font-size: 1rem;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LWdyYXBoL29ic2N1cml0eS1ncmFwaC5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX3ZhcmlhYmxlcy5zY3NzIiwic3JjL2FwcC9jb21wb25lbnRzL29ic2N1cml0eS1ncmFwaC9vYnNjdXJpdHktZ3JhcGguY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGFBQUE7RUFDQSw2QkFBQTtFQUNBLHFCQUFBO0VBQ0EseUJDTFk7RURNWiw4Q0FBQTtBRUZKO0FGSUk7RUFDSSxhQUFBO0VBQ0EsNkJBQUE7RUFDQSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0FFRlI7QUZJUTtFQUVJLDRCQUFBO0VBRUEsbUJBQUE7RUFDQSwrQ0FBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7QUVKWjtBRk9nQjtFQUNJLFVBQUE7RUFDQSxtQkFBQTtBRUxwQjtBRlVZO0VBQ0ksV0FBQTtFQUNBLFVBQUE7RUFDQSw0REFBQTtBRVJoQjtBRllZO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0FFVmhCO0FGa0JRO0VBQ0kseURBQUE7QUVoQlo7QUZlUTtFQUNJLHVEQUFBO0FFYlo7QUZZUTtFQUNJLHlEQUFBO0FFVlo7QUZTUTtFQUNJLHVEQUFBO0FFUFo7QUZhSTtFQUNJLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7RUFDQSxpQkFBQTtBRVhSO0FDdkRFO0VIdUVFO0lBQ0ksZ0JBQUE7SUFDQSxzQkFBQTtFRVpOO0VGY007SUFDSSxlQUFBO0VFWlY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LWdyYXBoL29ic2N1cml0eS1ncmFwaC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICdtaXhpbnMnO1xuXG4ub2JzY3VyaXR5X19ncmFwaCB7XG4gICAgbWFyZ2luLXRvcDogMmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAyZW0gMWVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICAgIGJveC1zaGFkb3c6IDIycHggMjFweCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XG5cbiAgICAmX19jb250YWluZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAzMDBweDtcbiAgICBcbiAgICAgICAgLm9ic2N1cml0eV9fYXZnLWJhciB7XG4gICAgICAgICAgICAvLyBoZWlnaHQ6IDI2M3B4O1xuICAgICAgICAgICAgd2lsbC1jaGFuZ2U6IGhlaWdodCwgb3BhY2l0eTtcbiAgICBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkZCRkE7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAxMnB4IDEycHggMXB4IDAgcmdiYSgwLDAsMCwwLjI1KTtcbiAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVyZW07XG4gICAgXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgLmJhci12YWx1ZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLmJhci12YWx1ZXtcbiAgICAgICAgICAgICAgICBjb2xvcjogZ3JleTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpIDFzO1xuICAgIFxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLmJhci10aXRsZSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTVlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMDAwMDA7XG4gICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuODdweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXG4gICAgICAgICR0aW1lTGlzdDogMC41LCAxLCAxLjUsIDI7XG4gICAgICAgICRjb3VudDogMTtcbiAgICBcbiAgICAgICAgQGVhY2ggJHRpbWUgaW4gJHRpbWVMaXN0IHtcbiAgICAgICAgLm9ic2N1cml0eS1hdmctYmFyOm50aC1jaGlsZCgjeyRjb3VudH0pIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAjeyR0aW1lfXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xuICAgICAgICB9XG4gICAgICAgICRjb3VudDogJGNvdW50ICsgMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICZfX2luZm8ge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBwYWRkaW5nOiAwIDJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMWVtO1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIGRlc2t0b3Age1xuICAgIC5vYnNjdXJpdHlfX2dyYXBoe1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgICAgICZfX2luZm8ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxufSIsIlxuJHByaW1hcnktZm9udDogJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjtcbiRzZWNvbmRhcnktZm9udDogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknO1xuXG4vLyBDb2xvcnNcblxuJHByaW1hcnktY29sb3I6ICNBOUU1QUM7IiwiLm9ic2N1cml0eV9fZ3JhcGgge1xuICBtYXJnaW4tdG9wOiAyZW07XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDJlbSAxZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICNBOUU1QUM7XG4gIGJveC1zaGFkb3c6IDIycHggMjFweCAxcHggMCByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG4ub2JzY3VyaXR5X19ncmFwaF9fY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMzAwcHg7XG59XG4ub2JzY3VyaXR5X19ncmFwaF9fY29udGFpbmVyIC5vYnNjdXJpdHlfX2F2Zy1iYXIge1xuICB3aWxsLWNoYW5nZTogaGVpZ2h0LCBvcGFjaXR5O1xuICBiYWNrZ3JvdW5kOiAjRkZGQkZBO1xuICBib3gtc2hhZG93OiAxMnB4IDEycHggMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgd2lkdGg6IDYwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1ib3R0b206IDVyZW07XG59XG4ub2JzY3VyaXR5X19ncmFwaF9fY29udGFpbmVyIC5vYnNjdXJpdHlfX2F2Zy1iYXIuYWN0aXZlIC5iYXItdmFsdWUge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5X19hdmctYmFyIC5iYXItdmFsdWUge1xuICBjb2xvcjogZ3JleTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpIDFzO1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5X19hdmctYmFyIC5iYXItdGl0bGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogLTVlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjg3cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiAzNXB4O1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5LWF2Zy1iYXI6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNjQ1LCAwLjA0NSwgMC4zNTUsIDEpO1xufVxuLm9ic2N1cml0eV9fZ3JhcGhfX2NvbnRhaW5lciAub2JzY3VyaXR5LWF2Zy1iYXI6bnRoLWNoaWxkKDIpIHtcbiAgdHJhbnNpdGlvbjogYWxsIDFzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcbn1cbi5vYnNjdXJpdHlfX2dyYXBoX19jb250YWluZXIgLm9ic2N1cml0eS1hdmctYmFyOm50aC1jaGlsZCgzKSB7XG4gIHRyYW5zaXRpb246IGFsbCAxLjVzIGN1YmljLWJlemllcigwLjY0NSwgMC4wNDUsIDAuMzU1LCAxKTtcbn1cbi5vYnNjdXJpdHlfX2dyYXBoX19jb250YWluZXIgLm9ic2N1cml0eS1hdmctYmFyOm50aC1jaGlsZCg0KSB7XG4gIHRyYW5zaXRpb246IGFsbCAycyBjdWJpYy1iZXppZXIoMC42NDUsIDAuMDQ1LCAwLjM1NSwgMSk7XG59XG4ub2JzY3VyaXR5X19ncmFwaF9faW5mbyB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHBhZGRpbmc6IDAgMmVtO1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5vYnNjdXJpdHlfX2dyYXBoIHtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLm9ic2N1cml0eV9fZ3JhcGhfX2luZm8ge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgfVxufSIsIiR0YWJsZXQtd2lkdGg6IDc2OHB4O1xuJGRlc2t0b3Atd2lkdGg6IDEwMjRweDtcblxuQG1peGluIHRhYmxldCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyR0YWJsZXQtd2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skZGVza3RvcC13aWR0aCAtIDFweH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZGVza3RvcCB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRofSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBsdC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk1OXB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5NjBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LXhzIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59Il19 */"; /***/ }, /***/ "./src/app/components/obscurity-graph/obscurity-graph.component.ts": /*!*************************************************************************!*\ !*** ./src/app/components/obscurity-graph/obscurity-graph.component.ts ***! \*************************************************************************/ /*! exports provided: ObscurityGraphComponent */ /***/ function srcAppComponentsObscurityGraphObscurityGraphComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObscurityGraphComponent", function () { return ObscurityGraphComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); var ObscurityGraphComponent = function ObscurityGraphComponent(renderer, el, sanitizer) { _classCallCheck(this, ObscurityGraphComponent); // events.subscribe('graphInit', () => { this.renderer = renderer; this.el = el; this.sanitizer = sanitizer; this.imageURL = ''; this.country = ''; this.doneLoading = false; this.barActive = false; // this.setGraph(); // }); }; ObscurityGraphComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["Renderer2"] }, { type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_2__["DomSanitizer"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Input"])()], ObscurityGraphComponent.prototype, "data", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('globalAvgBar', { static: true })], ObscurityGraphComponent.prototype, "globalBar", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('countryAvgBar', { static: true })], ObscurityGraphComponent.prototype, "countryBar", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('allTimeBar', { static: true })], ObscurityGraphComponent.prototype, "allTimeBar", void 0); tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["ViewChild"])('recentBar', { static: true })], ObscurityGraphComponent.prototype, "recentBar", void 0); ObscurityGraphComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-obscurity-graph', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./obscurity-graph.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-graph/obscurity-graph.component.html")).default, styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./obscurity-graph.component.scss */ "./src/app/components/obscurity-graph/obscurity-graph.component.scss")).default] })], ObscurityGraphComponent); /***/ }, /***/ "./src/app/components/obscurity-rating/obscurity-rating.component.scss": /*!*****************************************************************************!*\ !*** ./src/app/components/obscurity-rating/obscurity-rating.component.scss ***! \*****************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsObscurityRatingObscurityRatingComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.obscurity {\n max-width: 1024px;\n margin: 0 auto;\n padding: 2rem 0px;\n transform: translateY(100px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n opacity: 0;\n transform: translateY(100px);\n}\n\n.obscurity.show {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.header__title {\n color: white;\n border-bottom: 5px #A9E5AC solid;\n}\n\n.percentile {\n display: flex;\n justify-content: flex-start;\n margin-top: 3em;\n}\n\n.percentile h2 {\n font-size: 4em;\n text-align: center;\n}\n\n.percentile p {\n font-size: 1em;\n margin-top: 1em;\n}\n\n.percentile__card {\n border-radius: 5px;\n background-color: #fff;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n padding: 2em 2em 5em;\n box-shadow: 22px 21px 4px 4px rgba(0, 0, 0, 0.5);\n}\n\n@media (min-width: 1024px) {\n .percentile__card {\n padding: 2em 2em 5em;\n min-width: 600px;\n box-sizing: border-box;\n }\n .percentile h2 {\n font-size: 8em;\n }\n .percentile p {\n font-size: 1em;\n margin-top: 1em;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LXJhdGluZy9vYnNjdXJpdHktcmF0aW5nLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvY29tcG9uZW50cy9vYnNjdXJpdHktcmF0aW5nL29ic2N1cml0eS1yYXRpbmcuY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLGNBQUE7RUFDQSw4QkFBQTtFQUNBLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsU0FBQTtBQ0RSOztBQ0ZBO0VBQ0ksaUJBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7RUFDQSw0QkFBQTtFQUNBLGlEQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0FES0o7O0FDSEk7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURLUjs7QUNGQTtFQUNJLFlBQUE7RUFDQSxnQ0FBQTtBREtKOztBQ0ZBO0VBQ0ksYUFBQTtFQUNBLDJCQUFBO0VBQ0EsZUFBQTtBREtKOztBQ0hJO0VBQ0UsY0FBQTtFQUNBLGtCQUFBO0FES047O0FDRkk7RUFDSSxjQUFBO0VBQ0EsZUFBQTtBRElSOztBQ0RJO0VBQ0Usa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGFBQUE7RUFDQSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSwyQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RUFDQSxnREFBQTtBREdOOztBRXhDRTtFRDhDTTtJQUNJLG9CQUFBO0lBQ0EsZ0JBQUE7SUFDQSxzQkFBQTtFREZWO0VDTU07SUFDRSxjQUFBO0VESlI7RUNPTTtJQUNJLGNBQUE7SUFDQSxlQUFBO0VETFY7QUFDRiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvb2JzY3VyaXR5LXJhdGluZy9vYnNjdXJpdHktcmF0aW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhlYWRlciB7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IC4yZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59IiwiLmhlYWRlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDNlbTtcbiAgYm9yZGVyLWJvdHRvbTogOHB4IGJsYWNrIHNvbGlkO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwLjJlbTtcbiAgbWFyZ2luOiAwO1xufVxuXG4ub2JzY3VyaXR5IHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBwYWRkaW5nOiAycmVtIDBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcbn1cbi5vYnNjdXJpdHkuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuXG4uaGVhZGVyX190aXRsZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm9yZGVyLWJvdHRvbTogNXB4ICNBOUU1QUMgc29saWQ7XG59XG5cbi5wZXJjZW50aWxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtYXJnaW4tdG9wOiAzZW07XG59XG4ucGVyY2VudGlsZSBoMiB7XG4gIGZvbnQtc2l6ZTogNGVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ucGVyY2VudGlsZSBwIHtcbiAgZm9udC1zaXplOiAxZW07XG4gIG1hcmdpbi10b3A6IDFlbTtcbn1cbi5wZXJjZW50aWxlX19jYXJkIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIHBhZGRpbmc6IDJlbSAyZW0gNWVtO1xuICBib3gtc2hhZG93OiAyMnB4IDIxcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnBlcmNlbnRpbGVfX2NhcmQge1xuICAgIHBhZGRpbmc6IDJlbSAyZW0gNWVtO1xuICAgIG1pbi13aWR0aDogNjAwcHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAucGVyY2VudGlsZSBoMiB7XG4gICAgZm9udC1zaXplOiA4ZW07XG4gIH1cbiAgLnBlcmNlbnRpbGUgcCB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICB9XG59IiwiQGltcG9ydCAnY29tcG9uZW50cy9oZWFkZXInO1xuQGltcG9ydCAndmFyaWFibGVzJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5vYnNjdXJpdHkge1xuICAgIG1heC13aWR0aDogMTAyNHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDJyZW0gMHB4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcblxuICAgICYuc2hvdyB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICAgIH1cbiAgfVxuLmhlYWRlcl9fdGl0bGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItYm90dG9tOiA1cHggJHByaW1hcnktY29sb3Igc29saWQ7XG59XG5cbi5wZXJjZW50aWxlIHtcbiAgICBkaXNwbGF5OmZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIG1hcmdpbi10b3A6IDNlbTtcblxuICAgIGgyIHtcbiAgICAgIGZvbnQtc2l6ZTogNGVtO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbiAgXG4gICAgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAxZW07XG4gICAgfVxuICBcbiAgICAmX19jYXJkIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgICAgcGFkZGluZzogMmVtIDJlbSA1ZW07XG4gICAgICBib3gtc2hhZG93OiAyMnB4IDIxcHggNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgfVxuICB9XG5cblxuQGluY2x1ZGUgZGVza3RvcCB7XG5cbiAgICAucGVyY2VudGlsZSB7XG5cbiAgICAgICAgJl9fY2FyZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAyZW0gMmVtIDVlbTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogNjAwcHg7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB9XG5cbiAgICAgICAgICBcbiAgICAgICAgaDIge1xuICAgICAgICAgIGZvbnQtc2l6ZTogOGVtO1xuICAgICAgICB9XG4gICAgICBcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDFlbTtcbiAgICAgICAgfVxuICAgIH0gXG5cbn1cbiAgIiwiJHRhYmxldC13aWR0aDogNzY4cHg7XG4kZGVza3RvcC13aWR0aDogMTAyNHB4O1xuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHRhYmxldC13aWR0aH0pIGFuZCAobWF4LXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRoIC0gMXB4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JGRlc2t0b3Atd2lkdGh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGx0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QteHMge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn0iXX0= */"; /***/ }, /***/ "./src/app/components/obscurity-rating/obscurity-rating.component.ts": /*!***************************************************************************!*\ !*** ./src/app/components/obscurity-rating/obscurity-rating.component.ts ***! \***************************************************************************/ /*! exports provided: ObscurityRatingComponent */ /***/ function srcAppComponentsObscurityRatingObscurityRatingComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObscurityRatingComponent", function () { return ObscurityRatingComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); var ObscurityRatingComponent = /*#__PURE__*/ function () { function ObscurityRatingComponent(element, intersectionObserverService) { _classCallCheck(this, ObscurityRatingComponent); this.element = element; this.intersectionObserverService = intersectionObserverService; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.show = false; } _createClass(ObscurityRatingComponent, [{ key: "updateAppBackgroundColor", value: function updateAppBackgroundColor(val) { if (val) { this.appColor.emit(3); } else { this.appColor.emit(2); } } }, { key: "ngOnInit", value: function ngOnInit() {} }, { key: "ngAfterViewInit", value: function ngAfterViewInit() { var _this9 = this; this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.20 }); this.intersectionObserverSubs = this.intersectionObserverService.getSubject().subscribe(function (el) { if (el.isIntersecting) { _this9.updateAppBackgroundColor(true); _this9.show = true; } else { _this9.show = false; } if (el.isVisible) { _this9.updateAppBackgroundColor(false); } }); } }]); return ObscurityRatingComponent; }(); ObscurityRatingComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], ObscurityRatingComponent.prototype, "appColor", void 0); ObscurityRatingComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-obscurity-rating', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./obscurity-rating.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/obscurity-rating/obscurity-rating.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./obscurity-rating.component.scss */ "./src/app/components/obscurity-rating/obscurity-rating.component.scss")).default] })], ObscurityRatingComponent); /***/ }, /***/ "./src/app/components/recommendations/recommendations.component.scss": /*!***************************************************************************!*\ !*** ./src/app/components/recommendations/recommendations.component.scss ***! \***************************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsRecommendationsRecommendationsComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.recommendations {\n max-width: 620px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n padding: 5rem 0;\n position: relative;\n height: 100%;\n min-height: 620px;\n opacity: 0;\n transform: translateY(100px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.recommendations.show {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.recommendations .header {\n color: white;\n}\n\n.recommendations .header__title {\n border-color: white;\n font-size: 2.3em;\n}\n\n.recommendations__content {\n position: relative;\n}\n\n.recommendations__container {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n border-radius: 25px 25px 0 0;\n overflow: hidden;\n box-sizing: content-box;\n padding-top: 80px;\n min-height: 620px;\n}\n\n.filter-btn {\n background-color: #2d3436;\n border: none;\n height: 29px;\n width: 44px;\n border-radius: 19px;\n color: white;\n font-size: 17px;\n padding-top: 1px;\n top: 20px;\n left: 10px;\n position: absolute;\n z-index: 3;\n}\n\n.add-playlist-btn, .refresh-btn {\n background-color: transparent;\n border: none;\n height: 29px;\n border-radius: 19px;\n color: #2d3436;\n font-size: 17px;\n padding-top: 1px;\n top: 20px;\n right: 10px;\n position: absolute;\n z-index: 1;\n display: inline-block;\n cursor: pointer;\n}\n\n.add-playlist-btn span, .refresh-btn span {\n /* Create Playlist: */\n font-size: 14px;\n font-weight: bold;\n color: #fffbfa;\n letter-spacing: 1.35px;\n text-align: center;\n margin-right: 6px;\n z-index: 1;\n}\n\n.refresh-btn {\n right: auto;\n}\n\n.content {\n position: relative;\n}\n\n.track-container {\n overflow-x: auto;\n width: 100%;\n height: 100%;\n -ms-overflow-style: none;\n overflow: -moz-scrollbars-none;\n overflow-y: hidden;\n}\n\n.track-container::-webkit-scrollbar {\n display: none;\n}\n\n.card-track {\n display: flex;\n overflow-y: hidden;\n overflow-x: scroll;\n width: 2700px;\n z-index: 1;\n padding-left: 42px;\n flex-wrap: wrap;\n height: 470px;\n align-items: flex-start;\n align-content: baseline;\n}\n\n.card-track::-webkit-scrollbar {\n display: none;\n}\n\n.card-track .card {\n background: none;\n width: 252px;\n height: 168px;\n margin-right: 70px;\n position: relative;\n}\n\n.card-track .card img {\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n max-height: 100%;\n}\n\n.card-track .card .card-info {\n background: #2d3436;\n box-shadow: -12px 5px 4px 0 rgba(0, 0, 0, 0.5);\n width: 252px;\n height: 142px;\n position: absolute;\n left: -16px;\n top: 16px;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n justify-content: flex-start;\n padding: 16px 16px 8px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n top: 50px;\n box-sizing: border-box;\n}\n\n.card-track .card .card-info h3 {\n font-size: 14px;\n margin: 0;\n width: 100%;\n color: #fff;\n}\n\n.card-track .card .card-info p {\n color: #fff;\n font-size: 10px;\n margin: 0;\n}\n\n.card-track .card .card-info a {\n text-decoration: none;\n color: #fff;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n}\n\n.card-track .card .card-content {\n background: #fffbfa;\n width: 252px;\n height: 142px;\n margin-right: 70px;\n position: relative;\n z-index: 1;\n}\n\n.card-track .card:nth-child(9) {\n margin-left: 40px;\n}\n\n.card-track .card:nth-child(1n+9) {\n margin-top: 50px;\n}\n\n.track-container {\n overflow-x: auto;\n width: 100%;\n height: 100%;\n -ms-overflow-style: none;\n overflow: -moz-scrollbars-none;\n overflow-y: hidden;\n}\n\n.track-container::-webkit-scrollbar {\n display: none;\n}\n\n.card-track {\n display: flex;\n overflow-y: hidden;\n overflow-x: scroll;\n width: 2700px;\n z-index: 1;\n padding-left: 42px;\n flex-wrap: wrap;\n height: 470px;\n align-items: flex-start;\n align-content: baseline;\n box-sizing: content-box;\n}\n\n.card-track::-webkit-scrollbar {\n display: none;\n}\n\n.card-track .card {\n background: none;\n width: 252px;\n height: 168px;\n position: relative;\n}\n\n.card-track .card img {\n -o-object-fit: cover;\n object-fit: cover;\n width: 100%;\n max-height: 100%;\n}\n\n.card-track .card .card-info {\n background: #2D3436;\n box-shadow: -12px 5px 4px 0 rgba(0, 0, 0, 0.5);\n width: 252px;\n height: 142px;\n position: absolute;\n left: -16px;\n top: 16px;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n justify-content: flex-start;\n padding: 16px 16px 8px;\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n top: 50px;\n}\n\n.card-track .card .card-info h3 {\n font-size: 14px;\n margin: 0;\n width: 100%;\n color: #fff;\n}\n\n.card-track .card .card-info p {\n color: #fff;\n font-size: 10px;\n margin: 0;\n}\n\n.card-track .card .card-info a {\n text-decoration: none;\n color: #fff;\n display: flex;\n flex-wrap: wrap;\n align-content: flex-end;\n}\n\n.card-track .card .card-content {\n background: #FFFBFA;\n width: 252px;\n height: 142px;\n margin-right: 70px;\n position: relative;\n z-index: 1;\n}\n\n.card-track .card:nth-child(9) {\n margin-left: 40px;\n}\n\n.card-track .card:nth-child(1n+9) {\n margin-top: 50px;\n}\n\n@media (min-width: 1024px) {\n .recommendations {\n max-width: 820px;\n }\n .recommendations .header__title {\n border-color: white;\n font-size: 3em;\n }\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvcmVjb21tZW5kYXRpb25zL3JlY29tbWVuZGF0aW9ucy5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL2NvbXBvbmVudHMvcmVjb21tZW5kYXRpb25zL3JlY29tbWVuZGF0aW9ucy5jb21wb25lbnQuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvX21peGlucy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJO0VBQ0ksY0FBQTtFQUNBLDhCQUFBO0VBQ0EsMEJBQUE7RUFBQSx1QkFBQTtFQUFBLGtCQUFBO0VBQ0EscUJBQUE7RUFDQSxTQUFBO0FDRFI7O0FDRkE7RUFDRSxnQkFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxpREFBQTtBREtGOztBQ0pFO0VBQ0UsVUFBQTtFQUNBLDBCQUFBO0FETUo7O0FDSEU7RUFDRSxZQUFBO0FES0o7O0FDRkU7RUFDRSxtQkFBQTtFQUNBLGdCQUFBO0FESUo7O0FDQUE7RUFDSSxrQkFBQTtBREdKOztBQ0FBO0VBQ0Usa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsNEJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtBREdGOztBQ0RBO0VBQ0UseUJBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFB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a0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QURKUjs7QUNPTTtFQUNFLGlCQUFBO0FETFI7O0FDUU07RUFDRyxnQkFBQTtBRE5UOztBRTFRRTtFRHNSRTtJQUNFLGdCQUFBO0VEUko7RUNVSTtJQUNFLG1CQUFBO0lBQ0EsY0FBQTtFRFJOO0FBQ0YiLCJmaWxlIjoic3JjL2FwcC9jb21wb25lbnRzL3JlY29tbWVuZGF0aW9ucy9yZWNvbW1lbmRhdGlvbnMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZGVyIHtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDhweCBibGFjayBzb2xpZDtcbiAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogLjJlbTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn0iLCIuaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gIHdpZHRoOiBmaXQtY29udGVudDtcbiAgcGFkZGluZy1ib3R0b206IDAuMmVtO1xuICBtYXJnaW46IDA7XG59XG5cbi5yZWNvbW1lbmRhdGlvbnMge1xuICBtYXgtd2lkdGg6IDYyMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzogNXJlbSAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogNjIwcHg7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4ucmVjb21tZW5kYXRpb25zLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5yZWNvbW1lbmRhdGlvbnMgLmhlYWRlciB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5yZWNvbW1lbmRhdGlvbnMgLmhlYWRlcl9fdGl0bGUge1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDIuM2VtO1xufVxuXG4ucmVjb21tZW5kYXRpb25zX19jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucmVjb21tZW5kYXRpb25zX19jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMjVweCAyNXB4IDAgMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIHBhZGRpbmctdG9wOiA4MHB4O1xuICBtaW4taGVpZ2h0OiA2MjBweDtcbn1cblxuLmZpbHRlci1idG4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNDM2O1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMjlweDtcbiAgd2lkdGg6IDQ0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDE5cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBwYWRkaW5nLXRvcDogMXB4O1xuICB0b3A6IDIwcHg7XG4gIGxlZnQ6IDEwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMztcbn1cblxuLmFkZC1wbGF5bGlzdC1idG4sIC5yZWZyZXNoLWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMjlweDtcbiAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgY29sb3I6ICMyZDM0MzY7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgdG9wOiAyMHB4O1xuICByaWdodDogMTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hZGQtcGxheWxpc3QtYnRuIHNwYW4sIC5yZWZyZXNoLWJ0biBzcGFuIHtcbiAgLyogQ3JlYXRlIFBsYXlsaXN0OiAqL1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogI2ZmZmJmYTtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMzVweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgei1pbmRleDogMTtcbn1cblxuLnJlZnJlc2gtYnRuIHtcbiAgcmlnaHQ6IGF1dG87XG59XG5cbi5jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udHJhY2stY29udGFpbmVyIHtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuICBvdmVyZmxvdzogLW1vei1zY3JvbGxiYXJzLW5vbmU7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cblxuLnRyYWNrLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uY2FyZC10cmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuICB3aWR0aDogMjcwMHB4O1xuICB6LWluZGV4OiAxO1xuICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgaGVpZ2h0OiA0NzBweDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIGFsaWduLWNvbnRlbnQ6IGJhc2VsaW5lO1xufVxuLmNhcmQtdHJhY2s6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgd2lkdGg6IDI1MnB4O1xuICBoZWlnaHQ6IDE2OHB4O1xuICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIGltZyB7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjMmQzNDM2O1xuICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjUpO1xuICB3aWR0aDogMjUycHg7XG4gIGhlaWdodDogMTQycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTE2cHg7XG4gIHRvcDogMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAxNnB4IDE2cHggOHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xuICB0b3A6IDUwcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1pbmZvIGgzIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gcCB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbjogMDtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1jb250ZW50IHtcbiAgYmFja2dyb3VuZDogI2ZmZmJmYTtcbiAgd2lkdGg6IDI1MnB4O1xuICBoZWlnaHQ6IDE0MnB4O1xuICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkOm50aC1jaGlsZCg5KSB7XG4gIG1hcmdpbi1sZWZ0OiA0MHB4O1xufVxuLmNhcmQtdHJhY2sgLmNhcmQ6bnRoLWNoaWxkKDFuKzkpIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbn1cblxuLnRyYWNrLWNvbnRhaW5lciB7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcbiAgb3ZlcmZsb3c6IC1tb3otc2Nyb2xsYmFycy1ub25lO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbi50cmFjay1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNhcmQtdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgd2lkdGg6IDI3MDBweDtcbiAgei1pbmRleDogMTtcbiAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGhlaWdodDogNDcwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1jb250ZW50OiBiYXNlbGluZTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG4uY2FyZC10cmFjazo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmNhcmQtdHJhY2sgLmNhcmQge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB3aWR0aDogMjUycHg7XG4gIGhlaWdodDogMTY4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIGltZyB7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjMkQzNDM2O1xuICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjUpO1xuICB3aWR0aDogMjUycHg7XG4gIGhlaWdodDogMTQycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTE2cHg7XG4gIHRvcDogMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAxNnB4IDE2cHggOHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xuICB0b3A6IDUwcHg7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1pbmZvIGgzIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW46IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogI2ZmZjtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gcCB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbjogMDtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkIC5jYXJkLWluZm8gYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XG59XG4uY2FyZC10cmFjayAuY2FyZCAuY2FyZC1jb250ZW50IHtcbiAgYmFja2dyb3VuZDogI0ZGRkJGQTtcbiAgd2lkdGg6IDI1MnB4O1xuICBoZWlnaHQ6IDE0MnB4O1xuICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cbi5jYXJkLXRyYWNrIC5jYXJkOm50aC1jaGlsZCg5KSB7XG4gIG1hcmdpbi1sZWZ0OiA0MHB4O1xufVxuLmNhcmQtdHJhY2sgLmNhcmQ6bnRoLWNoaWxkKDFuKzkpIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAucmVjb21tZW5kYXRpb25zIHtcbiAgICBtYXgtd2lkdGg6IDgyMHB4O1xuICB9XG4gIC5yZWNvbW1lbmRhdGlvbnMgLmhlYWRlcl9fdGl0bGUge1xuICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAzZW07XG4gIH1cbn0iLCJAaW1wb3J0IFwiY29tcG9uZW50cy9oZWFkZXJcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcblxuLnJlY29tbWVuZGF0aW9ucyB7XG4gIG1heC13aWR0aDogNjIwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiA1cmVtIDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiA2MjBweDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcbiAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAmLnNob3cge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cblxuICAuaGVhZGVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICAuaGVhZGVyX190aXRsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXNpemU6IDIuM2VtO1xuICB9XG59XG5cbi5yZWNvbW1lbmRhdGlvbnNfX2NvbnRlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnJlY29tbWVuZGF0aW9uc19fY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDI1cHggMjVweCAwIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBwYWRkaW5nLXRvcDogODBweDtcbiAgbWluLWhlaWdodDogNjIwcHg7XG59XG4uZmlsdGVyLWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZDM0MzY7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiAyOXB4O1xuICB3aWR0aDogNDRweDtcbiAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXNpemU6IDE3cHg7XG4gIHBhZGRpbmctdG9wOiAxcHg7XG4gIHRvcDogMjBweDtcbiAgbGVmdDogMTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAzO1xufVxuXG4uYWRkLXBsYXlsaXN0LWJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGhlaWdodDogMjlweDtcbiAgYm9yZGVyLXJhZGl1czogMTlweDtcbiAgY29sb3I6ICMyZDM0MzY7XG4gIGZvbnQtc2l6ZTogMTdweDtcbiAgcGFkZGluZy10b3A6IDFweDtcbiAgdG9wOiAyMHB4O1xuICByaWdodDogMTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgc3BhbiB7XG4gICAgLyogQ3JlYXRlIFBsYXlsaXN0OiAqL1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogI2ZmZmJmYTtcbiAgICBsZXR0ZXItc3BhY2luZzogMS4zNXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG59XG5cbi5yZWZyZXNoLWJ0biB7XG4gIEBleHRlbmQgLmFkZC1wbGF5bGlzdC1idG47XG4gIHJpZ2h0OiBhdXRvO1xufVxuXG4uY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRyYWNrLWNvbnRhaW5lciB7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLy8gSUUgMTArXG4gIG92ZXJmbG93OiAtbW96LXNjcm9sbGJhcnMtbm9uZTsgLy8gRmlyZWZveFxuICBvdmVyZmxvdy15OiBoaWRkZW47XG59XG5cbi50cmFjay1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTsgLy8gU2FmYXJpIGFuZCBDaHJvbWVcbn1cblxuLmNhcmQtdHJhY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIG92ZXJmbG93LXg6IHNjcm9sbDtcbiAgd2lkdGg6IDI3MDBweDtcbiAgei1pbmRleDogMTtcbiAgcGFkZGluZy1sZWZ0OiA0MnB4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGhlaWdodDogNDcwcHg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1jb250ZW50OiBiYXNlbGluZTtcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuY2FyZCB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICB3aWR0aDogMjUycHg7XG4gICAgaGVpZ2h0OiAxNjhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDcwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGltZyB7XG4gICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuY2FyZC1pbmZvIHtcbiAgICAgIGJhY2tncm91bmQ6ICMyZDM0MzY7XG4gICAgICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgICAgd2lkdGg6IDI1MnB4O1xuICAgICAgaGVpZ2h0OiAxNDJweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IC0xNnB4O1xuICAgICAgdG9wOiAxNnB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgcGFkZGluZzogMTZweCAxNnB4IDhweDtcbiAgICAgIHRyYW5zaXRpb246IC4zcyBjdWJpYy1iZXppZXIoLjI1LC4xLC4yNSwxKTtcbiAgICAgIHRvcDogNTBweDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH1cblxuICAgICAgcCB7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgIH1cbiAgICAgIGEge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgfVxuICAgIH1cbiAgICAuY2FyZC1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6ICNmZmZiZmE7XG4gICAgICB3aWR0aDogMjUycHg7XG4gICAgICBoZWlnaHQ6IDE0MnB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA3MHB4O1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICAmOm50aC1jaGlsZCg5KSB7XG4gICAgICBtYXJnaW4tbGVmdDogNDBweDtcbiAgICB9XG5cbiAgICAmOm50aC1jaGlsZCgxbiArIDkpIHtcbiAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgfVxuICB9XG59XG5cbiAgLnRyYWNrLWNvbnRhaW5lciB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOyAgLy8gSUUgMTArXG4gICAgb3ZlcmZsb3c6IC1tb3otc2Nyb2xsYmFycy1ub25lOyAgLy8gRmlyZWZveFxuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgfVxuXG4gICAgLnRyYWNrLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTsgIC8vIFNhZmFyaSBhbmQgQ2hyb21lXG4gICAgfVxuICAuY2FyZC10cmFjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuICAgIHdpZHRoOiAyNzAwcHg7XG4gICAgei1pbmRleDogMTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQycHg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGhlaWdodDogNDcwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24tY29udGVudDogYmFzZWxpbmU7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICAgLmNhcmQge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIHdpZHRoOiAyNTJweDtcbiAgICAgIGhlaWdodDogMTY4cHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBpbWcge1xuICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5jYXJkLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMkQzNDM2O1xuICAgICAgICBib3gtc2hhZG93OiAtMTJweCA1cHggNHB4IDAgcmdiYSgwLDAsMCwwLjUwKTtcbiAgICAgICAgd2lkdGg6IDI1MnB4O1xuICAgICAgICBoZWlnaHQ6IDE0MnB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IC0xNnB4O1xuICAgICAgICB0b3A6IDE2cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgcGFkZGluZzogMTZweCAxNnB4IDhweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgICAgICB0b3A6IDUwcHg7XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmNhcmQtY29udGVudCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkZCRkE7XG4gICAgICAgIHdpZHRoOiAyNTJweDtcbiAgICAgICAgaGVpZ2h0OiAxNDJweDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA3MHB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICB9XG5cbiAgICAgICY6bnRoLWNoaWxkKDkpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7XG4gICAgICB9XG5cbiAgICAgICY6bnRoLWNoaWxkKDFuKzkpIHtcbiAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgZGVza3RvcCB7XG4gICAgLnJlY29tbWVuZGF0aW9ucyB7XG4gICAgICBtYXgtd2lkdGg6IDgyMHB4O1xuXG4gICAgICAuaGVhZGVyX190aXRsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogd2hpdGU7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgfVxuICAgIH1cblxuICB9XG4iLCIkdGFibGV0LXdpZHRoOiA3NjhweDtcbiRkZXNrdG9wLXdpZHRoOiAxMDI0cHg7XG5cbkBtaXhpbiB0YWJsZXQge1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skdGFibGV0LXdpZHRofSkgYW5kIChtYXgtd2lkdGg6ICN7JGRlc2t0b3Atd2lkdGggLSAxcHh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGRlc2t0b3Age1xuICBAbWVkaWEgKG1pbi13aWR0aDogI3skZGVza3RvcC13aWR0aH0pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gbHQtbWQge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NTlweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn1cblxuQG1peGluIGd0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTYwcHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC14cyB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufSJdfQ== */"; /***/ }, /***/ "./src/app/components/recommendations/recommendations.component.ts": /*!*************************************************************************!*\ !*** ./src/app/components/recommendations/recommendations.component.ts ***! \*************************************************************************/ /*! exports provided: RecommendationsComponent */ /***/ function srcAppComponentsRecommendationsRecommendationsComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RecommendationsComponent", function () { return RecommendationsComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! src/app/services/infoService */ "./src/app/services/infoService.ts"); /* harmony import */ var src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! src/app/services/spotifyService */ "./src/app/services/spotifyService.ts"); /* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js"); /* harmony import */ var _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! @angular/material/snack-bar */ "./node_modules/@angular/material/esm2015/snack-bar.js"); var RecommendationsComponent = /*#__PURE__*/ function () { function RecommendationsComponent(element, intersectionObserverService, infoSvc, spotifyService, sanitizer, snackBar) { _classCallCheck(this, RecommendationsComponent); this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.spotifyService = spotifyService; this.sanitizer = sanitizer; this.snackBar = snackBar; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.show = false; this.initialTracks = false; } _createClass(RecommendationsComponent, [{ key: "updateAppBackgroundColor", value: function updateAppBackgroundColor() { this.appColor.emit(5); } }, { key: "ngOnInit", value: function ngOnInit() { var _this10 = this; this.infoSvc.getUserStream().subscribe(function (user) { console.log('recommendations'); _this10.user = Object.assign({}, user); }); } }, { key: "ngAfterViewInit", value: function ngAfterViewInit() { var _this11 = this; this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.70 }); this.intersectionObserverSubs = this.intersectionObserverService.getSubject().subscribe(function (el) { if (el.isIntersecting) { _this11.updateAppBackgroundColor(); _this11.show = true; var config = { allTimeArtistIDs: _this11.user.allTimeArtistIDs, currentArtistsIDs: _this11.user.currentArtistsIDs, allTimeTrackIDs: _this11.user.allTimeTrackIDs, currentTrackIDs: _this11.user.currentTrackIDs, country: _this11.user.userInfo.country }; if (!_this11.initialTracks) { _this11.spotifyService.getRecommendations(config).then(function (data) { _this11.recommendedTracks = data.tracks; _this11.initialTracks = true; }).catch(function (err) { console.log('Error getting recommended Tracks'); }); } } else { _this11.show = false; } }); } }, { key: "refreshTracks", value: function refreshTracks() { var _this12 = this; var config = { allTimeArtistIDs: this.user.allTimeArtistIDs, currentArtistsIDs: this.user.currentArtistsIDs, allTimeTrackIDs: this.user.allTimeTrackIDs, currentTrackIDs: this.user.currentTrackIDs, country: this.user.userInfo.country }; this.spotifyService.getRecommendations(config).then(function (data) { _this12.recommendedTracks = data.tracks; }).catch(function (err) { console.log('playlist error', err); _this12.snackBar.open('Server Error. Please Try Again Later.', '', { duration: 5000, panelClass: 'panel-error' }); }); } }, { key: "makePlaylist", value: function makePlaylist() { var _this13 = this; var config = { userID: this.user.userInfo.id, playlistName: 'Recommended for You // Obscurify', tracks: this.recommendedTracks }; this.spotifyService.makePlaylist(config).then(function (results) { console.log('playlist', results); _this13.snackBar.open('Playlist Created in Spotify!', '', { duration: 5000, panelClass: 'panel-success' }); }).catch(function (err) { console.log('playlist error', err); _this13.snackBar.open('Server Error. Please Try Again Later.', '', { duration: 5000, panelClass: 'panel-error' }); }); } }]); return RecommendationsComponent; }(); RecommendationsComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__["InfoService"] }, { type: src_app_services_spotifyService__WEBPACK_IMPORTED_MODULE_4__["SpotifyService"] }, { type: _angular_platform_browser__WEBPACK_IMPORTED_MODULE_5__["DomSanitizer"] }, { type: _angular_material_snack_bar__WEBPACK_IMPORTED_MODULE_6__["MatSnackBar"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], RecommendationsComponent.prototype, "appColor", void 0); RecommendationsComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-recommendations', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./recommendations.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/recommendations/recommendations.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./recommendations.component.scss */ "./src/app/components/recommendations/recommendations.component.scss")).default] })], RecommendationsComponent); /***/ }, /***/ "./src/app/components/spotify-auth/spotify-auth.component.ts": /*!*******************************************************************!*\ !*** ./src/app/components/spotify-auth/spotify-auth.component.ts ***! \*******************************************************************/ /*! exports provided: SpotifyAuthComponent */ /***/ function srcAppComponentsSpotifyAuthSpotifyAuthComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpotifyAuthComponent", function () { return SpotifyAuthComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/spotifyAuth */ "./src/app/services/spotifyAuth/index.ts"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); var SpotifyAuthComponent = /*#__PURE__*/ function () { function SpotifyAuthComponent(authService, cookieService, tknService) { _classCallCheck(this, SpotifyAuthComponent); this.authService = authService; this.cookieService = cookieService; this.tknService = tknService; } _createClass(SpotifyAuthComponent, [{ key: "ngOnInit", value: function ngOnInit() { // Send it back to app home this.authService.authorized(); } }]); return SpotifyAuthComponent; }(); SpotifyAuthComponent.ctorParameters = function () { return [{ type: src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] }, { type: src_app_services_spotifyAuth__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }]; }; SpotifyAuthComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-spotify-auth', template: "

Authorizing…

", styles: [""] })], SpotifyAuthComponent); /***/ }, /***/ "./src/app/components/top-genres/top-genres.component.scss": /*!*****************************************************************!*\ !*** ./src/app/components/top-genres/top-genres.component.scss ***! \*****************************************************************/ /*! exports provided: default */ /***/ function srcAppComponentsTopGenresTopGenresComponentScss(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony default export */ __webpack_exports__["default"] = ".header__title {\n font-size: 3em;\n border-bottom: 8px black solid;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n padding-bottom: 0.2em;\n margin: 0;\n}\n\n.slate {\n padding: 2rem 0px;\n}\n\n.genre {\n max-width: 1024px;\n margin: 0 auto;\n opacity: 0;\n transition: opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre__list {\n margin-top: 2em;\n}\n\n.genre__card {\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 5px;\n padding: 1.5em 1.5em;\n opacity: 0;\n transform: translateY(50px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre__card h3 {\n font-size: 2em;\n}\n\n@media (min-width: 1024px) {\n .genre__card {\n min-width: 636px;\n }\n .genre__card h3 {\n font-size: 3em;\n }\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(1) {\n transition: 0s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(2) {\n transition: 0.3s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(3) {\n transition: 0.6s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(4) {\n transition: 0.9s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(5) {\n transition: 1.2s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(6) {\n transition: 1.5s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(7) {\n transition: 1.8s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(8) {\n transition: 2.1s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(9) {\n transition: 2.4s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(10) {\n transition: 2.7s;\n}\n\n.genre.show {\n opacity: 1;\n transform: translateY(0px);\n transition: 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);\n}\n\n.genre.show .genre__card {\n opacity: 1;\n transform: translateY(0px);\n}\n\n.genre.show .genre__card:nth-child(11) {\n transition: 3s;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvYXBwL3Njc3MvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCJzcmMvYXBwL2NvbXBvbmVudHMvdG9wLWdlbnJlcy90b3AtZ2VucmVzLmNvbXBvbmVudC5zY3NzIiwiL1VzZXJzL2FsZXgvRGVza3RvcC9vYnNjdXJpZnkzL3NyYy9hcHAvY29tcG9uZW50cy90b3AtZ2VucmVzL3RvcC1nZW5yZXMuY29tcG9uZW50LnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL19taXhpbnMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFSTtFQUNJLGNBQUE7RUFDQSw4QkFBQTtFQUNBLDBCQUFBO0VBQUEsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0EsU0FBQTtBQ0RSOztBQ0hBO0VBQ0ksaUJBQUE7QURNSjs7QUNGQTtFQUNJLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLFVBQUE7RUFDQSx5REFBQTtBREtKOztBQ0hJO0VBQ0ksZUFBQTtBREtSOztBQ0ZJO0VBQ0ksb0NBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0VBQ0EsVUFBQTtFQUNBLDJCQUFBO0VBQ0EsaURBQUE7QURJUjs7QUNIUTtFQUNJLGNBQUE7QURLWjs7QUVyQkU7RUQyQk07SUFDSSxnQkFBQTtFREZWO0VDSVU7SUFDSSxjQUFBO0VERmQ7QUFDRjs7QUNTSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEUFI7O0FDU1E7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURQWjs7QUNTUTtFQUNJLGNBQUE7QURQWjs7QUNISTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FETVI7O0FDSlE7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURNWjs7QUNKUTtFQUNJLGdCQUFBO0FETVo7O0FDaEJJO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0VBQ0EsaURBQUE7QURtQlI7O0FDakJRO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0FEbUJaOztBQ2pCUTtFQUNJLGdCQUFBO0FEbUJaOztBQzdCSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEZ0NSOztBQzlCUTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRGdDWjs7QUM5QlE7RUFDSSxnQkFBQTtBRGdDWjs7QUMxQ0k7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7RUFDQSxpREFBQTtBRDZDUjs7QUMzQ1E7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QUQ2Q1o7O0FDM0NRO0VBQ0ksZ0JBQUE7QUQ2Q1o7O0FDdkRJO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0VBQ0EsaURBQUE7QUQwRFI7O0FDeERRO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0FEMERaOztBQ3hEUTtFQUNJLGdCQUFBO0FEMERaOztBQ3BFSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEdUVSOztBQ3JFUTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRHVFWjs7QUNyRVE7RUFDSSxnQkFBQTtBRHVFWjs7QUNqRkk7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7RUFDQSxpREFBQTtBRG9GUjs7QUNsRlE7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QURvRlo7O0FDbEZRO0VBQ0ksZ0JBQUE7QURvRlo7O0FDOUZJO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0VBQ0EsaURBQUE7QURpR1I7O0FDL0ZRO0VBQ0ksVUFBQTtFQUNBLDBCQUFBO0FEaUdaOztBQy9GUTtFQUNJLGdCQUFBO0FEaUdaOztBQzNHSTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtFQUNBLGlEQUFBO0FEOEdSOztBQzVHUTtFQUNJLFVBQUE7RUFDQSwwQkFBQTtBRDhHWjs7QUM1R1E7RUFDSSxnQkFBQTtBRDhHWjs7QUN4SEk7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7RUFDQSxpREFBQTtBRDJIUjs7QUN6SFE7RUFDSSxVQUFBO0VBQ0EsMEJBQUE7QUQySFo7O0FDekhRO0VBQ0ksY0FBQTtBRDJIWiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvdG9wLWdlbnJlcy90b3AtZ2VucmVzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhlYWRlciB7XG5cbiAgICAmX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgICAgICBib3JkZXItYm90dG9tOiA4cHggYmxhY2sgc29saWQ7XG4gICAgICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IC4yZW07XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59IiwiLmhlYWRlcl9fdGl0bGUge1xuICBmb250LXNpemU6IDNlbTtcbiAgYm9yZGVyLWJvdHRvbTogOHB4IGJsYWNrIHNvbGlkO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIHBhZGRpbmctYm90dG9tOiAwLjJlbTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uc2xhdGUge1xuICBwYWRkaW5nOiAycmVtIDBweDtcbn1cblxuLmdlbnJlIHtcbiAgbWF4LXdpZHRoOiAxMDI0cHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmVfX2xpc3Qge1xuICBtYXJnaW4tdG9wOiAyZW07XG59XG4uZ2VucmVfX2NhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcGFkZGluZzogMS41ZW0gMS41ZW07XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZV9fY2FyZCBoMyB7XG4gIGZvbnQtc2l6ZTogMmVtO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5nZW5yZV9fY2FyZCB7XG4gICAgbWluLXdpZHRoOiA2MzZweDtcbiAgfVxuICAuZ2VucmVfX2NhcmQgaDMge1xuICAgIGZvbnQtc2l6ZTogM2VtO1xuICB9XG59XG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNpdGlvbjogMHM7XG59XG5cbi5nZW5yZS5zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZDpudGgtY2hpbGQoMikge1xuICB0cmFuc2l0aW9uOiAwLjNzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDMpIHtcbiAgdHJhbnNpdGlvbjogMC42cztcbn1cblxuLmdlbnJlLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkOm50aC1jaGlsZCg0KSB7XG4gIHRyYW5zaXRpb246IDAuOXM7XG59XG5cbi5nZW5yZS5zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZDpudGgtY2hpbGQoNSkge1xuICB0cmFuc2l0aW9uOiAxLjJzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDYpIHtcbiAgdHJhbnNpdGlvbjogMS41cztcbn1cblxuLmdlbnJlLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkOm50aC1jaGlsZCg3KSB7XG4gIHRyYW5zaXRpb246IDEuOHM7XG59XG5cbi5nZW5yZS5zaG93IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIHRyYW5zaXRpb246IDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZDpudGgtY2hpbGQoOCkge1xuICB0cmFuc2l0aW9uOiAyLjFzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDkpIHtcbiAgdHJhbnNpdGlvbjogMi40cztcbn1cblxuLmdlbnJlLnNob3cge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTtcbn1cbi5nZW5yZS5zaG93IC5nZW5yZV9fY2FyZCB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkOm50aC1jaGlsZCgxMCkge1xuICB0cmFuc2l0aW9uOiAyLjdzO1xufVxuXG4uZ2VucmUuc2hvdyB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB0cmFuc2l0aW9uOiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpO1xufVxuLmdlbnJlLnNob3cgLmdlbnJlX19jYXJkIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG59XG4uZ2VucmUuc2hvdyAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKDExKSB7XG4gIHRyYW5zaXRpb246IDNzO1xufSIsIkBpbXBvcnQgJ2NvbXBvbmVudHMvaGVhZGVyJztcbkBpbXBvcnQgJ21peGlucyc7XG5cbi5zbGF0ZSB7XG4gICAgcGFkZGluZzogMnJlbSAwcHg7XG5cbn1cblxuLmdlbnJlIHtcbiAgICBtYXgtd2lkdGg6IDEwMjRweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuXG4gICAgJl9fbGlzdCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDJlbTtcbiAgICB9XG5cbiAgICAmX19jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgcGFkZGluZzogMS41ZW0gMS41ZW07XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuICAgICAgICBoMyB7XG4gICAgICAgICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgICAgfVxuXG4gICAgfVxuICAgIFxufVxuXG5AaW5jbHVkZSBkZXNrdG9wIHtcblxuICAgIC5nZW5yZSB7XG5cbiAgICAgICAgJl9fY2FyZCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDYzNnB4O1xuXG4gICAgICAgICAgICBoMyB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAzZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAxMCB7XG4gICAgLmdlbnJlLnNob3cge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzIGN1YmljLWJlemllciguMjUsLjEsLjI1LDEpO1xuXG4gICAgICAgIC5nZW5yZV9fY2FyZCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweClcbiAgICAgICAgfVxuICAgICAgICAuZ2VucmVfX2NhcmQ6bnRoLWNoaWxkKCN7JGkgKyAxfSkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogIDAuM3MgKiAkaTtcbiAgICAgICAgfVxuICAgIH1cblxuICB9IiwiJHRhYmxldC13aWR0aDogNzY4cHg7XG4kZGVza3RvcC13aWR0aDogMTAyNHB4O1xuXG5AbWl4aW4gdGFibGV0IHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JHRhYmxldC13aWR0aH0pIGFuZCAobWF4LXdpZHRoOiAjeyRkZXNrdG9wLXdpZHRoIC0gMXB4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBkZXNrdG9wIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6ICN7JGRlc2t0b3Atd2lkdGh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGx0LW1kIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICBAY29udGVudFxuICB9XG59XG5cbkBtaXhpbiBndC1tZCB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDk2MHB4KSB7XG4gICAgQGNvbnRlbnRcbiAgfVxufVxuXG5AbWl4aW4gZ3QteHMge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkge1xuICAgIEBjb250ZW50XG4gIH1cbn0iXX0= */"; /***/ }, /***/ "./src/app/components/top-genres/top-genres.component.ts": /*!***************************************************************!*\ !*** ./src/app/components/top-genres/top-genres.component.ts ***! \***************************************************************/ /*! exports provided: TopGenresComponent */ /***/ function srcAppComponentsTopGenresTopGenresComponentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TopGenresComponent", function () { return TopGenresComponent; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! src/app/services/intersectionObserver */ "./src/app/services/intersectionObserver.ts"); /* harmony import */ var src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! src/app/services/infoService */ "./src/app/services/infoService.ts"); var TopGenresComponent = /*#__PURE__*/ function () { function TopGenresComponent(element, intersectionObserverService, infoSvc) { _classCallCheck(this, TopGenresComponent); this.element = element; this.intersectionObserverService = intersectionObserverService; this.infoSvc = infoSvc; this.appColor = new _angular_core__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"](); this.items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; this.show = false; this.genres = []; } _createClass(TopGenresComponent, [{ key: "updateAppBackgroundColor", value: function updateAppBackgroundColor() { this.appColor.emit(2); } }, { key: "ngOnInit", value: function ngOnInit() { var _this14 = this; this.infoSvc.getUserStream().subscribe(function (x) { console.log('User in Genres', x); if (x.topGenres) { console.log('x.genres'); var genreArry = x.topGenres.slice(0, 10); console.log(genreArry); _this14.genres = _toConsumableArray(genreArry); } }); } }, { key: "ngAfterViewInit", value: function ngAfterViewInit() { var _this15 = this; this.intersectionObserverService.init(this.element.nativeElement, { threshold: 0.20 }); this.intersectionObserverSubs = this.intersectionObserverService.getSubject().subscribe(function (el) { if (el.isIntersecting) { _this15.updateAppBackgroundColor(); _this15.show = true; } else { _this15.show = false; } }); } }]); return TopGenresComponent; }(); TopGenresComponent.ctorParameters = function () { return [{ type: _angular_core__WEBPACK_IMPORTED_MODULE_1__["ElementRef"] }, { type: src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"] }, { type: src_app_services_infoService__WEBPACK_IMPORTED_MODULE_3__["InfoService"] }]; }; tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Output"])()], TopGenresComponent.prototype, "appColor", void 0); TopGenresComponent = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Component"])({ selector: 'app-top-genres', template: tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! raw-loader!./top-genres.component.html */ "./node_modules/raw-loader/dist/cjs.js!./src/app/components/top-genres/top-genres.component.html")).default, providers: [src_app_services_intersectionObserver__WEBPACK_IMPORTED_MODULE_2__["default"]], styles: [tslib__WEBPACK_IMPORTED_MODULE_0__["__importDefault"](__webpack_require__( /*! ./top-genres.component.scss */ "./src/app/components/top-genres/top-genres.component.scss")).default] })], TopGenresComponent); /***/ }, /***/ "./src/app/services/browserCheck.ts": /*!******************************************!*\ !*** ./src/app/services/browserCheck.ts ***! \******************************************/ /*! exports provided: default */ /***/ function srcAppServicesBrowserCheckTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/cdk/platform */ "./node_modules/@angular/cdk/esm2015/platform.js"); var BrowserCheck = /*#__PURE__*/ function () { function BrowserCheck(platform) { _classCallCheck(this, BrowserCheck); this.platform = platform; if (window.screen.width < 1021) { this.isDevice = true; } else { this.isDevice = false; } } _createClass(BrowserCheck, [{ key: "checkIfBrowser", value: function checkIfBrowser() { return this.platform.isBrowser; } }]); return BrowserCheck; }(); BrowserCheck.ctorParameters = function () { return [{ type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_2__["Platform"] }]; }; BrowserCheck = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])({ providedIn: 'root' })], BrowserCheck); /* harmony default export */ __webpack_exports__["default"] = BrowserCheck; /***/ }, /***/ "./src/app/services/infoService.ts": /*!*****************************************!*\ !*** ./src/app/services/infoService.ts ***! \*****************************************/ /*! exports provided: InfoService */ /***/ function srcAppServicesInfoServiceTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfoService", function () { return InfoService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/router */ "./node_modules/@angular/router/fesm2015/router.js"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ../utilities/obscurityFuncs */ "./src/app/utilities/obscurityFuncs.ts"); var InfoService = /*#__PURE__*/ function () { function InfoService(http, router, obscurifyFuncs) { _classCallCheck(this, InfoService); this.http = http; this.router = router; this.obscurifyFuncs = obscurifyFuncs; this.apiUserUrl = 'https://api.spotify.com/v1/me'; this.apiAllTimeArtists = 'https://api.spotify.com/v1/me/top/artists?limit=50&time_range=long_term'; this.apiCurrentArtists = 'https://api.spotify.com/v1/me/top/artists?limit=50&time_range=short_term'; this.apiAllTimeTracks = 'https://api.spotify.com/v1/me/top/tracks?limit=50&time_range=long_term'; this.apiCurrentTracks = 'https://api.spotify.com/v1/me/top/tracks?limit=50&time_range=short_term'; this.user = {}; this.user$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](this.user); } _createClass(InfoService, [{ key: "fetchUserInfo", value: function fetchUserInfo() { var _this16 = this; return this.http.get(this.apiUserUrl).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (user) { console.log('user info', user); _this16.user = Object.assign({}, _this16.user, { userInfo: user }); _this16.user$.next(_this16.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelf'))); } }, { key: "fetchAllTimeTracks", value: function fetchAllTimeTracks() { var _this17 = this; return this.http.get(this.apiAllTimeTracks).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (tracks) { var allTimeTrackIDs = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = tracks.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var track = _step.value; allTimeTrackIDs.push(track.id); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } console.log('info service', tracks.items); _this17.user = Object.assign({}, _this17.user, { allTimeTracks: tracks.items, allTimeTrackIDs: [].concat(allTimeTrackIDs) }); _this17.user$.next(_this17.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } }, { key: "fetchCurrentTracks", value: function fetchCurrentTracks() { var _this18 = this; return this.http.get(this.apiCurrentTracks).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (tracks) { var currentTrackIDs = []; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = tracks.items[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var track = _step2.value; currentTrackIDs.push(track.id); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return != null) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } _this18.user = Object.assign({}, _this18.user, { currentTracks: tracks.items, currentTrackIDs: [].concat(currentTrackIDs) }); _this18.user$.next(_this18.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } }, { key: "fetchAllTimeArtists", value: function fetchAllTimeArtists() { var _this19 = this; return this.http.get(this.apiAllTimeArtists).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (artists) { var allTimeObscurifyScore = 0; var genres = {}; var topGenres = []; var allTimeArtistIDs = []; // Loop Through All Time Artists // Get Obscure Score and Top Genres for (var i = 0; i < artists.items.length; i++) { allTimeObscurifyScore = allTimeObscurifyScore + 50 / artists.items.length * Math.floor(artists.items[i].popularity * (1 - i / artists.items.length)); allTimeArtistIDs.push(artists.items[i].id); for (var y = 0; y < artists.items[i].genres.length; y++) { if (genres[artists.items[i].genres[y]] != null) { genres[artists.items[i].genres[y]] = genres[artists.items[i].genres[y]] + 1; } else { genres[artists.items[i].genres[y]] = 1; } } } for (var g in genres) { if (genres.hasOwnProperty(g)) { topGenres.push([g, genres[g]]); } } topGenres.sort(_this19.obscurifyFuncs.comparator); allTimeObscurifyScore = Math.floor(allTimeObscurifyScore / 10); _this19.user = Object.assign({}, _this19.user, { allTimeArtists: artists.items, allTimeObscurifyScore: allTimeObscurifyScore, topGenres: topGenres, allTimeArtistIDs: allTimeArtistIDs }); _this19.user$.next(_this19.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } }, { key: "fetchCurrentArtists", value: function fetchCurrentArtists() { var _this20 = this; return this.http.get(this.apiCurrentArtists).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (artists) { var recentObscurifyScore = 0; var currentArtistsIDs = []; for (var i = 0; i < artists.items.length; i++) { currentArtistsIDs.push(artists.items[i]); recentObscurifyScore = recentObscurifyScore + 50 / artists.items.length * Math.floor(artists.items[i].popularity * (1 - i / artists.items.length)); } recentObscurifyScore = Math.floor(recentObscurifyScore / 10); _this20.user = Object.assign({}, _this20.user, { currentArtistsIDs: [].concat(currentArtistsIDs), currentArtists: artists.items, recentObscurifyScore: recentObscurifyScore }); _this20.user$.next(_this20.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } }, { key: "fetchRecommendations", value: function fetchRecommendations() { var _this21 = this; return this.http.get(this.apiCurrentArtists).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (artists) { _this21.user = Object.assign({}, _this21.user, { currentArtists: artists }); _this21.user$.next(_this21.user); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('getSelfAlbums'))); } }, { key: "getUserStream", value: function getUserStream() { return this.user$.asObservable(); } }, { key: "handleError", value: function handleError() { var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'operation'; var result = arguments.length > 1 ? arguments[1] : undefined; return function (error) { result = error; return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["of"])(result); }; } }]); return InfoService; }(); InfoService.ctorParameters = function () { return [{ type: _angular_common_http__WEBPACK_IMPORTED_MODULE_5__["HttpClient"] }, { type: _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"] }, { type: _utilities_obscurityFuncs__WEBPACK_IMPORTED_MODULE_6__["default"] }]; }; InfoService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])()], InfoService); /***/ }, /***/ "./src/app/services/intersectionObserver.ts": /*!**************************************************!*\ !*** ./src/app/services/intersectionObserver.ts ***! \**************************************************/ /*! exports provided: default */ /***/ function srcAppServicesIntersectionObserverTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); var IntersectionObserverService = /*#__PURE__*/ function () { function IntersectionObserverService() { _classCallCheck(this, IntersectionObserverService); this.intersectionObserverSubject = new rxjs__WEBPACK_IMPORTED_MODULE_1__["Subject"](); } _createClass(IntersectionObserverService, [{ key: "getSubject", value: function getSubject() { return this.intersectionObserverSubject; } }, { key: "init", value: function init(el, options) { var _this22 = this; var OBS = new IntersectionObserver(function (entries) { _this22.intersectionObserverSubject.next(entries[0]); }, options); OBS.observe(el); } }]); return IntersectionObserverService; }(); /* harmony default export */ __webpack_exports__["default"] = IntersectionObserverService; /***/ }, /***/ "./src/app/services/obscurifyService.ts": /*!**********************************************!*\ !*** ./src/app/services/obscurifyService.ts ***! \**********************************************/ /*! exports provided: ObscurifyService, default */ /***/ function srcAppServicesObscurifyServiceTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObscurifyService", function () { return ObscurifyService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); var ObscurifyService = /*#__PURE__*/ function () { function ObscurifyService(http) { _classCallCheck(this, ObscurifyService); this.http = http; this.obscurifyData = {}; this.obscurifyUrl = 'https://ktp0b5os1g.execute-api.us-east-2.amazonaws.com/dev'; this.obscurifyData$ = new rxjs__WEBPACK_IMPORTED_MODULE_3__["BehaviorSubject"](this.obscurifyData); } _createClass(ObscurifyService, [{ key: "getObscurifyData", value: function getObscurifyData(countryID, obscurifyScore, recentObscurifyScore) { var _this23 = this; return this.http.get(this.obscurifyUrl + "/getObscurifyData?code=".concat(countryID, "&obscurifyScore=").concat(obscurifyScore, "&recentObscurifyScore=").concat(recentObscurifyScore), { headers: new _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpHeaders"]().set('Authorization', 'asdf') }).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["tap"])(function (data) { console.log('user info', data); _this23.obscurifyData = Object.assign({}, data); _this23.obscurifyData$.next(_this23.obscurifyData); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_4__["catchError"])(this.handleError('Error'))); } }, { key: "handleError", value: function handleError() { var operation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'operation'; var result = arguments.length > 1 ? arguments[1] : undefined; return function (error) { result = error; return Object(rxjs__WEBPACK_IMPORTED_MODULE_3__["of"])(result); }; } }]); return ObscurifyService; }(); ObscurifyService.ctorParameters = function () { return [{ type: _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"] }]; }; ObscurifyService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["Injectable"])()], ObscurifyService); /* harmony default export */ __webpack_exports__["default"] = ObscurifyService; /***/ }, /***/ "./src/app/services/spotifyAuth/index.ts": /*!***********************************************!*\ !*** ./src/app/services/spotifyAuth/index.ts ***! \***********************************************/ /*! exports provided: ScopesBuilder, TokenService, AuthService, AuthGuard, SpotifyAuthInterceptor */ /***/ function srcAppServicesSpotifyAuthIndexTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _shared_scopes_builder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./shared/scopes-builder */ "./src/app/services/spotifyAuth/shared/scopes-builder.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScopesBuilder", function () { return _shared_scopes_builder__WEBPACK_IMPORTED_MODULE_1__["ScopesBuilder"]; }); /* harmony import */ var _service_token_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./service/token.service */ "./src/app/services/spotifyAuth/service/token.service.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TokenService", function () { return _service_token_service__WEBPACK_IMPORTED_MODULE_2__["TokenService"]; }); /* harmony import */ var _service_auth_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./service/auth.service */ "./src/app/services/spotifyAuth/service/auth.service.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AuthService", function () { return _service_auth_service__WEBPACK_IMPORTED_MODULE_3__["AuthService"]; }); /* harmony import */ var _service_auth_guard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./service/auth.guard */ "./src/app/services/spotifyAuth/service/auth.guard.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AuthGuard", function () { return _service_auth_guard__WEBPACK_IMPORTED_MODULE_4__["AuthGuard"]; }); /* harmony import */ var _service_spotify_auth_interceptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./service/spotify-auth.interceptor */ "./src/app/services/spotifyAuth/service/spotify-auth.interceptor.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SpotifyAuthInterceptor", function () { return _service_spotify_auth_interceptor__WEBPACK_IMPORTED_MODULE_5__["SpotifyAuthInterceptor"]; }); /***/ }, /***/ "./src/app/services/spotifyAuth/service/auth.guard.ts": /*!************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/auth.guard.ts ***! \************************************************************/ /*! exports provided: AuthGuard */ /***/ function srcAppServicesSpotifyAuthServiceAuthGuardTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthGuard", function () { return AuthGuard; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _auth_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./auth.service */ "./src/app/services/spotifyAuth/service/auth.service.ts"); /* harmony import */ var _token_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./token.service */ "./src/app/services/spotifyAuth/service/token.service.ts"); var AuthGuard = /*#__PURE__*/ function () { function AuthGuard(authService, tokenSvc) { _classCallCheck(this, AuthGuard); this.authService = authService; this.tokenSvc = tokenSvc; } _createClass(AuthGuard, [{ key: "canActivate", value: function canActivate(next, state) { return this.canActivateChild(next, state); } }, { key: "canActivateChild", value: function canActivateChild(next, state) { var response = next.queryParams; if (response.spotifyToken && response.obscurifyToken) { this.tokenSvc.setAuthToken(response); } return !!response; } }]); return AuthGuard; }(); AuthGuard.ctorParameters = function () { return [{ type: _auth_service__WEBPACK_IMPORTED_MODULE_2__["AuthService"] }, { type: _token_service__WEBPACK_IMPORTED_MODULE_3__["TokenService"] }]; }; AuthGuard = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])()], AuthGuard); /***/ }, /***/ "./src/app/services/spotifyAuth/service/auth.service.ts": /*!**************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/auth.service.ts ***! \**************************************************************/ /*! exports provided: AuthService */ /***/ function srcAppServicesSpotifyAuthServiceAuthServiceTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AuthService", function () { return AuthService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); /* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ../../../../environments/environment */ "./src/environments/environment.ts"); var AuthService = /*#__PURE__*/ function () { function AuthService(cookieService) { _classCallCheck(this, AuthService); this.cookieService = cookieService; this.requestAuthUrl = 'https://accounts.spotify.com/authorize'; this.authorized$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](false); this.state = this.generateRandomString(); this.authConfig = { client_id: _environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].client_id, response_type: 'code', redirect_uri: _environments_environment__WEBPACK_IMPORTED_MODULE_4__["environment"].redirect_uri, state: this.state, show_dialog: false, scope: 'user-read-private user-top-read playlist-modify-public playlist-modify-private' }; } _createClass(AuthService, [{ key: "generateRandomString", value: function generateRandomString() { var text = ''; var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; for (var i = 0; i < 16; i++) { text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; } }, { key: "authorize", value: function authorize() { console.log('authorize()'); console.log(this.buildAuthUrl()); this.cookieService.set('spotify_auth_state', this.state); window.location.href = this.buildAuthUrl(); } // Signal someone, that router can navigate somewhere }, { key: "authorized", value: function authorized() { console.log('Called auth'); this.authorized$.next(true); } }, { key: "configure", value: function configure(config) { // Validate Config this.authConfig = config; return this; } }, { key: "buildAuthUrl", value: function buildAuthUrl() { var params = []; for (var _i = 0, _Object$entries = Object.entries(this.authConfig); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), key = _Object$entries$_i[0], value = _Object$entries$_i[1]; if (typeof value === 'object') { params.push("".concat(key, "=").concat(value.join(' '))); } else { params.push("".concat(key, "=").concat(value)); } } return "".concat(this.requestAuthUrl, "?").concat(params.join('&')); } }, { key: "authorizedStream", get: function get() { return this.authorized$.asObservable(); } }]); return AuthService; }(); AuthService.ctorParameters = function () { return [{ type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] }]; }; AuthService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])()], AuthService); /***/ }, /***/ "./src/app/services/spotifyAuth/service/spotify-auth.interceptor.ts": /*!**************************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/spotify-auth.interceptor.ts ***! \**************************************************************************/ /*! exports provided: SpotifyAuthInterceptor */ /***/ function srcAppServicesSpotifyAuthServiceSpotifyAuthInterceptorTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpotifyAuthInterceptor", function () { return SpotifyAuthInterceptor; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _token_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./token.service */ "./src/app/services/spotifyAuth/service/token.service.ts"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! rxjs/operators */ "./node_modules/rxjs/_esm2015/operators/index.js"); var SpotifyAuthInterceptor = /*#__PURE__*/ function () { function SpotifyAuthInterceptor(tokenSvc) { _classCallCheck(this, SpotifyAuthInterceptor); this.tokenSvc = tokenSvc; } _createClass(SpotifyAuthInterceptor, [{ key: "intercept", value: function intercept(req, next) { var authReq = req.clone({ setHeaders: this.tokenSvc.authHeader }); return next.handle(authReq).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (event) {}, this.doOnError)); } }]); return SpotifyAuthInterceptor; }(); SpotifyAuthInterceptor.ctorParameters = function () { return [{ type: _token_service__WEBPACK_IMPORTED_MODULE_2__["TokenService"] }]; }; SpotifyAuthInterceptor = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])()], SpotifyAuthInterceptor); /***/ }, /***/ "./src/app/services/spotifyAuth/service/token.service.ts": /*!***************************************************************!*\ !*** ./src/app/services/spotifyAuth/service/token.service.ts ***! \***************************************************************/ /*! exports provided: TokenService */ /***/ function srcAppServicesSpotifyAuthServiceTokenServiceTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TokenService", function () { return TokenService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! rxjs */ "./node_modules/rxjs/_esm2015/index.js"); /* harmony import */ var ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ngx-cookie-service */ "./node_modules/ngx-cookie-service/fesm2015/ngx-cookie-service.js"); var TokenService = /*#__PURE__*/ function () { function TokenService(cookieService) { _classCallCheck(this, TokenService); this.cookieService = cookieService; this.token = { spotifyToken: '', obscurifyToken: '' }; this.token$ = new rxjs__WEBPACK_IMPORTED_MODULE_2__["BehaviorSubject"](this.token); } _createClass(TokenService, [{ key: "clearToken", value: function clearToken() { this.token = { spotifyToken: '', obscurifyToken: '' }; this.token$.next(this.token); } }, { key: "setAuthTokenCache", value: function setAuthTokenCache(tokenCookie) { if (!!tokenCookie) { this.token.spotifyToken = tokenCookie; } else { this.token.spotifyToken = ''; } this.token$.next(this.token); return !!this.token; } }, { key: "setAuthToken", value: function setAuthToken(spotifyResponse) { if (!!spotifyResponse && !!spotifyResponse.spotifyToken && !!spotifyResponse.obscurifyToken) { console.log('Spotify Repsonse', spotifyResponse); console.log('Spotify Time', spotifyResponse.expires_in); var now = new Date(); now.setTime(now.getTime() + 1 * 3600 * 1000); this.cookieService.set('spotifyResponse', spotifyResponse.spotifyToken, now); this.token.spotifyToken = spotifyResponse.spotifyToken; this.token.obscurifyToken = spotifyResponse.obscurifyToken; } else { this.token = { spotifyToken: '', obscurifyToken: '' }; } this.token$.next(this.token); return !!this.token; } }, { key: "oAuthToken", get: function get() { return this.token; } }, { key: "authHeader", get: function get() { return this.token.spotifyToken ? { Authorization: "Bearer ".concat(this.token.spotifyToken) } : {}; } }, { key: "authTokens", get: function get() { return this.token$.asObservable(); } }]); return TokenService; }(); TokenService.ctorParameters = function () { return [{ type: ngx_cookie_service__WEBPACK_IMPORTED_MODULE_3__["CookieService"] }]; }; TokenService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_1__["Injectable"])()], TokenService); /***/ }, /***/ "./src/app/services/spotifyAuth/shared/scopes-builder.ts": /*!***************************************************************!*\ !*** ./src/app/services/spotifyAuth/shared/scopes-builder.ts ***! \***************************************************************/ /*! exports provided: ScopesBuilder */ /***/ function srcAppServicesSpotifyAuthSharedScopesBuilderTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScopesBuilder", function () { return ScopesBuilder; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); var ScopesBuilder = /*#__PURE__*/ function () { function ScopesBuilder() { _classCallCheck(this, ScopesBuilder); this.scopes = [ScopesBuilder.USERS, ScopesBuilder.PLAYLISTS, ScopesBuilder.HISTORY, ScopesBuilder.LIBRARY, ScopesBuilder.CONNECT, ScopesBuilder.FOLLOW, ScopesBuilder.PLAYBACK]; } /** * * @param args [] means no particular scopes or public only */ _createClass(ScopesBuilder, [{ key: "withScopes", value: function withScopes() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } this.scopes = args; return this; } }, { key: "build", value: function build() { var buffer = []; this.scopes.forEach(function (scope) { if (typeof scope === 'string') { buffer.push(scope); } else { Object.keys(scope).forEach(function (property) { return buffer.push(scope[property]); }); } }); return buffer.join(' '); } }]); return ScopesBuilder; }(); ScopesBuilder.USERS = { READ_PRIVATE: 'user-read-private', READ_EMAIL: 'user-read-email', READ_BIRTHDATE: 'user-read-birthdate' }; ScopesBuilder.PLAYLISTS = { READ_PRIVATE: 'playlist-read-private', MODIFY_PRIVATE: 'playlist-modify-private', MODIFY_PPUBLIC: 'playlist-modify-public', READ_COLLABORATIVE: 'playlist-read-collaborative' }; ScopesBuilder.HISTORY = { TOP_READ: 'user-top-read', READ_RECENTLY_PLAYED: 'user-read-recently-played' }; ScopesBuilder.LIBRARY = { READ: 'user-library-read', MODIFY: 'user-library-modify' }; ScopesBuilder.CONNECT = { READ_CURRENTLY_PLAYING: 'user-read-currently-playing', MODIFY_PLAYBACK_STATE: 'user-modify-playback-state', READ_PLAYBACK_STATE: 'user-read-playback-state' }; ScopesBuilder.FOLLOW = { READ: 'user-follow-read', MODIFY: 'user-follow-modify' }; ScopesBuilder.PLAYBACK = { STREAMING: 'streaming' }; /***/ }, /***/ "./src/app/services/spotifyService.ts": /*!********************************************!*\ !*** ./src/app/services/spotifyService.ts ***! \********************************************/ /*! exports provided: SpotifyService */ /***/ function srcAppServicesSpotifyServiceTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpotifyService", function () { return SpotifyService; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! @angular/common/http */ "./node_modules/@angular/common/fesm2015/http.js"); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/cdk/platform */ "./node_modules/@angular/cdk/esm2015/platform.js"); var SpotifyService = /*#__PURE__*/ function () { function SpotifyService(http, platform) { _classCallCheck(this, SpotifyService); this.http = http; this.platform = platform; } _createClass(SpotifyService, [{ key: "getRecommendations", value: function getRecommendations(config) { var _this24 = this; var url; if (config.allTimeArtistIDs && config.allTimeTrackIDs) { url = 'https://api.spotify.com/v1/recommendations?seed_artists?country=' + ',' + config.allTimeArtistIDs[Math.floor(Math.random() * config.allTimeArtistIDs.length)] + config.currentArtistsIDs[Math.floor(Math.random() * config.currentArtistsIDs.length)] + '&seed_tracks=' + config.allTimeTrackIDs[Math.floor(Math.random() * config.allTimeTrackIDs.length)] + ',' + config.currentTrackIDs[Math.floor(Math.random() * config.currentTrackIDs.length)] + '&market=' + config.country + '&max_popularity=55' + '&min_popularity=25' + '&limit=16'; } else { url = 'https://api.spotify.com/v1/recommendations?seed_artists?country=' + ',' + config.currentArtistsIDs[Math.floor(Math.random() * config.currentArtistsIDs.length)] + '&seed_tracks=' + config.currentTrackIDs[Math.floor(Math.random() * config.currentTrackIDs.length)] + '&market=' + config.country + '&max_popularity=55' + '&min_popularity=25' + '&limit=16'; } return new Promise(function (resolve, reject) { _this24.http.get(url).subscribe(function (data) { resolve(data); }, function (err) { reject(err); }); }); } }, { key: "makePlaylist", value: function makePlaylist(config) { var _this25 = this; var userID = config.userID, token = config.token, playlistName = config.playlistName, tracks = config.tracks; var url = 'https://api.spotify.com/v1/users/' + userID + '/playlists'; var headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpHeaders"]().set('Authorization', 'Bearer ' + token).set('Accept', 'application/json'); var that = this; return new Promise(function (resolve, reject) { _this25.http.post(url, { name: playlistName }, { headers: headers }).subscribe(function (data) { resolve(data); var uriArray = []; var playlistID = data.id; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = tracks[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var track = _step3.value; uriArray.push(track.uri); } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return != null) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } that.fillPlaylistWithTracks(config, uriArray, playlistID); }, function (err) { reject(err); }); }); } }, { key: "fillPlaylistWithTracks", value: function fillPlaylistWithTracks(config, uriArray, playlistID) { var _this26 = this; var url = 'https://api.spotify.com/v1/users/' + config.userID + '/playlists/' + playlistID + '/tracks'; var headers = new _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpHeaders"]().set('Authorization', 'Bearer ').set('Accept', 'application/json'); return new Promise(function (resolve, reject) { _this26.http.post(url, { uris: uriArray }, { headers: headers }).subscribe(function (data) { resolve(data); }, function (err) { reject(err); }); }); } }]); return SpotifyService; }(); SpotifyService.ctorParameters = function () { return [{ type: _angular_common_http__WEBPACK_IMPORTED_MODULE_1__["HttpClient"] }, { type: _angular_cdk_platform__WEBPACK_IMPORTED_MODULE_3__["Platform"] }]; }; SpotifyService = tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"]([Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["Injectable"])()], SpotifyService); /***/ }, /***/ "./src/app/utilities/obscurityFuncs.ts": /*!*********************************************!*\ !*** ./src/app/utilities/obscurityFuncs.ts ***! \*********************************************/ /*! exports provided: default */ /***/ function srcAppUtilitiesObscurityFuncsTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); var ObscurityFuncs = /*#__PURE__*/ function () { function ObscurityFuncs() { _classCallCheck(this, ObscurityFuncs); } _createClass(ObscurityFuncs, [{ key: "findRandomGenres", value: function findRandomGenres(artist) { if (artist.genres.length > 1) { var random1 = Math.floor(Math.random() * artist.genres.length); var random2 = Math.floor(Math.random() * artist.genres.length); while (random1 == random2) { random2 = Math.floor(Math.random() * artist.genres.length); } var returnData = { randomGenre1: artist.genres[random1], randomGenre2: artist.genres[random2] }; // check to see if these genres contain the word "christmas", if so remove it if (returnData.randomGenre1.indexOf('christmas') > -1) { returnData.randomGenre1 = returnData.randomGenre1.replace('christmas', ''); } if (returnData.randomGenre2.indexOf('christmas') > -1) { returnData.randomGenre2 = returnData.randomGenre2.replace('christmas', ''); } return returnData; } else if (artist.genres.length == 1) { return { randomGenre1: artist.genres[0], randomGenre2: null }; } else { return { randomGenre1: null, randomGenre2: null }; } } }, { key: "findStarRating", value: function findStarRating(popularity) { switch (popularity) { case popularity >= 90: return '★★★★★'; case popularity >= 80: return '★★★★'; case popularity >= 65: return '★★★'; case popularity >= 50: return '★★'; case popularity >= 35: return '★'; default: return ''; } } }, { key: "comparator", value: function comparator(a, b) { if (a[1] > b[1]) { return -1; } if (a[1] < b[1]) { return 1; } return 0; } }]); return ObscurityFuncs; }(); /* harmony default export */ __webpack_exports__["default"] = ObscurityFuncs; /***/ }, /***/ "./src/environments/environment.ts": /*!*****************************************!*\ !*** ./src/environments/environment.ts ***! \*****************************************/ /*! exports provided: environment */ /***/ function srcEnvironmentsEnvironmentTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environment", function () { return environment; }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); // 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`. var environment = { production: false, redirect_uri: 'https://ktp0b5os1g.execute-api.us-east-2.amazonaws.com/dev/callbackLocal', client_id: '31e362f6085c4309a2e1a6d2c0f8d8ec' }; /* * 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. /***/ }, /***/ "./src/main.ts": /*!*********************!*\ !*** ./src/main.ts ***! \*********************/ /*! no exports provided */ /***/ function srcMainTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! hammerjs */ "./node_modules/hammerjs/hammer.js"); /* harmony import */ var hammerjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(hammerjs__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js"); /* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! @angular/platform-browser-dynamic */ "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js"); /* harmony import */ var _app_app_module__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./app/app.module */ "./src/app/app.module.ts"); /* harmony import */ var _environments_environment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./environments/environment */ "./src/environments/environment.ts"); if (_environments_environment__WEBPACK_IMPORTED_MODULE_5__["environment"].production) { Object(_angular_core__WEBPACK_IMPORTED_MODULE_2__["enableProdMode"])(); } Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_3__["platformBrowserDynamic"])().bootstrapModule(_app_app_module__WEBPACK_IMPORTED_MODULE_4__["AppModule"]).catch(function (err) { return console.error(err); }); /***/ }, /***/ 0: /*!***************************!*\ !*** multi ./src/main.ts ***! \***************************/ /*! no static exports found */ /***/ function _(module, exports, __webpack_require__) { module.exports = __webpack_require__( /*! /Users/alex/Desktop/obscurify3/src/main.ts */ "./src/main.ts"); /***/ } }, [[0, "runtime", "vendor"]]]); //# sourceMappingURL=main-es5.js.map ================================================ FILE: frontend/dist/obscurify3/polyfills-es2015.js ================================================ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills"],{ /***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": /*!**************************************************************************************************!*\ !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! \**************************************************************************************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/proposals/reflect-metadata */ "./node_modules/core-js/proposals/reflect-metadata.js"); /* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /***/ }), /***/ "./node_modules/core-js/internals/a-function.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/a-function.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = function (it) { if (typeof it != 'function') { throw TypeError(String(it) + ' is not a function'); } return it; }; /***/ }), /***/ "./node_modules/core-js/internals/a-possible-prototype.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/a-possible-prototype.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); module.exports = function (it) { if (!isObject(it) && it !== null) { throw TypeError("Can't set " + String(it) + ' as a prototype'); } return it; }; /***/ }), /***/ "./node_modules/core-js/internals/an-instance.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/an-instance.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = function (it, Constructor, name) { if (!(it instanceof Constructor)) { throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); } return it; }; /***/ }), /***/ "./node_modules/core-js/internals/an-object.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/an-object.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); module.exports = function (it) { if (!isObject(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; /***/ }), /***/ "./node_modules/core-js/internals/array-includes.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/array-includes.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; module.exports = { // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; /***/ }), /***/ "./node_modules/core-js/internals/array-iteration.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/array-iteration.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation var createMethod = function (TYPE) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; return function ($this, callbackfn, that, specificCreate) { var O = toObject($this); var self = IndexedObject(O); var boundFunction = bind(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var create = specificCreate || arraySpeciesCreate; var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var value, result; for (;length > index; index++) if (NO_HOLES || index in self) { value = self[index]; result = boundFunction(value, index, O); if (TYPE) { if (IS_MAP) target[index] = result; // map else if (result) switch (TYPE) { case 3: return true; // some case 5: return value; // find case 6: return index; // findIndex case 2: push.call(target, value); // filter } else if (IS_EVERY) return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; }; }; module.exports = { // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach forEach: createMethod(0), // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map map: createMethod(1), // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter filter: createMethod(2), // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some some: createMethod(3), // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every every: createMethod(4), // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find find: createMethod(5), // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex findIndex: createMethod(6) }; /***/ }), /***/ "./node_modules/core-js/internals/array-species-create.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/array-species-create.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation // https://tc39.github.io/ecma262/#sec-arrayspeciescreate module.exports = function (originalArray, length) { var C; if (isArray(originalArray)) { C = originalArray.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; else if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); }; /***/ }), /***/ "./node_modules/core-js/internals/bind-context.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/bind-context.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); // optional / simple context binding module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 0: return function () { return fn.call(that); }; case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; /***/ }), /***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": /*!****************************************************************************!*\ !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); // call something on iterator step with safe closing on error module.exports = function (iterator, fn, value, ENTRIES) { try { return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch (error) { var returnMethod = iterator['return']; if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); throw error; } }; /***/ }), /***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": /*!**************************************************************************!*\ !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var ITERATOR = wellKnownSymbol('iterator'); var SAFE_CLOSING = false; try { var called = 0; var iteratorWithReturn = { next: function () { return { done: !!called++ }; }, 'return': function () { SAFE_CLOSING = true; } }; iteratorWithReturn[ITERATOR] = function () { return this; }; // eslint-disable-next-line no-throw-literal Array.from(iteratorWithReturn, function () { throw 2; }); } catch (error) { /* empty */ } module.exports = function (exec, SKIP_CLOSING) { if (!SKIP_CLOSING && !SAFE_CLOSING) return false; var ITERATION_SUPPORT = false; try { var object = {}; object[ITERATOR] = function () { return { next: function () { return { done: ITERATION_SUPPORT = true }; } }; }; exec(object); } catch (error) { /* empty */ } return ITERATION_SUPPORT; }; /***/ }), /***/ "./node_modules/core-js/internals/classof-raw.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/classof-raw.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }), /***/ "./node_modules/core-js/internals/classof.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/classof.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (error) { /* empty */ } }; // getting tag from ES6+ `Object.prototype.toString` module.exports = function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; }; /***/ }), /***/ "./node_modules/core-js/internals/collection-strong.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/collection-strong.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); var setSpecies = __webpack_require__(/*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var fastKey = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").fastKey; var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var setInternalState = InternalStateModule.set; var internalStateGetterFor = InternalStateModule.getterFor; module.exports = { getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { var C = wrapper(function (that, iterable) { anInstance(that, C, CONSTRUCTOR_NAME); setInternalState(that, { type: CONSTRUCTOR_NAME, index: create(null), first: undefined, last: undefined, size: 0 }); if (!DESCRIPTORS) that.size = 0; if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); }); var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); var define = function (that, key, value) { var state = getInternalState(that); var entry = getEntry(that, key); var previous, index; // change existing entry if (entry) { entry.value = value; // create new entry } else { state.last = entry = { index: index = fastKey(key, true), key: key, value: value, previous: previous = state.last, next: undefined, removed: false }; if (!state.first) state.first = entry; if (previous) previous.next = entry; if (DESCRIPTORS) state.size++; else that.size++; // add to index if (index !== 'F') state.index[index] = entry; } return that; }; var getEntry = function (that, key) { var state = getInternalState(that); // fast case var index = fastKey(key); var entry; if (index !== 'F') return state.index[index]; // frozen object case for (entry = state.first; entry; entry = entry.next) { if (entry.key == key) return entry; } }; redefineAll(C.prototype, { // 23.1.3.1 Map.prototype.clear() // 23.2.3.2 Set.prototype.clear() clear: function clear() { var that = this; var state = getInternalState(that); var data = state.index; var entry = state.first; while (entry) { entry.removed = true; if (entry.previous) entry.previous = entry.previous.next = undefined; delete data[entry.index]; entry = entry.next; } state.first = state.last = undefined; if (DESCRIPTORS) state.size = 0; else that.size = 0; }, // 23.1.3.3 Map.prototype.delete(key) // 23.2.3.4 Set.prototype.delete(value) 'delete': function (key) { var that = this; var state = getInternalState(that); var entry = getEntry(that, key); if (entry) { var next = entry.next; var prev = entry.previous; delete state.index[entry.index]; entry.removed = true; if (prev) prev.next = next; if (next) next.previous = prev; if (state.first == entry) state.first = next; if (state.last == entry) state.last = prev; if (DESCRIPTORS) state.size--; else that.size--; } return !!entry; }, // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) forEach: function forEach(callbackfn /* , that = undefined */) { var state = getInternalState(this); var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); var entry; while (entry = entry ? entry.next : state.first) { boundFunction(entry.value, entry.key, this); // revert to the last existing entry while (entry && entry.removed) entry = entry.previous; } }, // 23.1.3.7 Map.prototype.has(key) // 23.2.3.7 Set.prototype.has(value) has: function has(key) { return !!getEntry(this, key); } }); redefineAll(C.prototype, IS_MAP ? { // 23.1.3.6 Map.prototype.get(key) get: function get(key) { var entry = getEntry(this, key); return entry && entry.value; }, // 23.1.3.9 Map.prototype.set(key, value) set: function set(key, value) { return define(this, key === 0 ? 0 : key, value); } } : { // 23.2.3.1 Set.prototype.add(value) add: function add(value) { return define(this, value = value === 0 ? 0 : value, value); } }); if (DESCRIPTORS) defineProperty(C.prototype, 'size', { get: function () { return getInternalState(this).size; } }); return C; }, setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) { var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); // add .keys, .values, .entries, [@@iterator] // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { setInternalState(this, { type: ITERATOR_NAME, target: iterated, state: getInternalCollectionState(iterated), kind: kind, last: undefined }); }, function () { var state = getInternalIteratorState(this); var kind = state.kind; var entry = state.last; // revert to the last existing entry while (entry && entry.removed) entry = entry.previous; // get next entry if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { // or finish the iteration state.target = undefined; return { value: undefined, done: true }; } // return step by kind if (kind == 'keys') return { value: entry.key, done: false }; if (kind == 'values') return { value: entry.value, done: false }; return { value: [entry.key, entry.value], done: false }; }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // add [@@species], 23.1.2.2, 23.2.2.2 setSpecies(CONSTRUCTOR_NAME); } }; /***/ }), /***/ "./node_modules/core-js/internals/collection-weak.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/collection-weak.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var getWeakData = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").getWeakData; var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js"); var $has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var setInternalState = InternalStateModule.set; var internalStateGetterFor = InternalStateModule.getterFor; var find = ArrayIterationModule.find; var findIndex = ArrayIterationModule.findIndex; var id = 0; // fallback for uncaught frozen keys var uncaughtFrozenStore = function (store) { return store.frozen || (store.frozen = new UncaughtFrozenStore()); }; var UncaughtFrozenStore = function () { this.entries = []; }; var findUncaughtFrozen = function (store, key) { return find(store.entries, function (it) { return it[0] === key; }); }; UncaughtFrozenStore.prototype = { get: function (key) { var entry = findUncaughtFrozen(this, key); if (entry) return entry[1]; }, has: function (key) { return !!findUncaughtFrozen(this, key); }, set: function (key, value) { var entry = findUncaughtFrozen(this, key); if (entry) entry[1] = value; else this.entries.push([key, value]); }, 'delete': function (key) { var index = findIndex(this.entries, function (it) { return it[0] === key; }); if (~index) this.entries.splice(index, 1); return !!~index; } }; module.exports = { getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { var C = wrapper(function (that, iterable) { anInstance(that, C, CONSTRUCTOR_NAME); setInternalState(that, { type: CONSTRUCTOR_NAME, id: id++, frozen: undefined }); if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); }); var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); var define = function (that, key, value) { var state = getInternalState(that); var data = getWeakData(anObject(key), true); if (data === true) uncaughtFrozenStore(state).set(key, value); else data[state.id] = value; return that; }; redefineAll(C.prototype, { // 23.3.3.2 WeakMap.prototype.delete(key) // 23.4.3.3 WeakSet.prototype.delete(value) 'delete': function (key) { var state = getInternalState(this); if (!isObject(key)) return false; var data = getWeakData(key); if (data === true) return uncaughtFrozenStore(state)['delete'](key); return data && $has(data, state.id) && delete data[state.id]; }, // 23.3.3.4 WeakMap.prototype.has(key) // 23.4.3.4 WeakSet.prototype.has(value) has: function has(key) { var state = getInternalState(this); if (!isObject(key)) return false; var data = getWeakData(key); if (data === true) return uncaughtFrozenStore(state).has(key); return data && $has(data, state.id); } }); redefineAll(C.prototype, IS_MAP ? { // 23.3.3.3 WeakMap.prototype.get(key) get: function get(key) { var state = getInternalState(this); if (isObject(key)) { var data = getWeakData(key); if (data === true) return uncaughtFrozenStore(state).get(key); return data ? data[state.id] : undefined; } }, // 23.3.3.5 WeakMap.prototype.set(key, value) set: function set(key, value) { return define(this, key, value); } } : { // 23.4.3.1 WeakSet.prototype.add(value) add: function add(value) { return define(this, value, true); } }); return C; } }; /***/ }), /***/ "./node_modules/core-js/internals/collection.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/collection.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js"); var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var anInstance = __webpack_require__(/*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); module.exports = function (CONSTRUCTOR_NAME, wrapper, common, IS_MAP, IS_WEAK) { var NativeConstructor = global[CONSTRUCTOR_NAME]; var NativePrototype = NativeConstructor && NativeConstructor.prototype; var Constructor = NativeConstructor; var ADDER = IS_MAP ? 'set' : 'add'; var exported = {}; var fixMethod = function (KEY) { var nativeMethod = NativePrototype[KEY]; redefine(NativePrototype, KEY, KEY == 'add' ? function add(value) { nativeMethod.call(this, value === 0 ? 0 : value); return this; } : KEY == 'delete' ? function (key) { return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); } : KEY == 'get' ? function get(key) { return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); } : KEY == 'has' ? function has(key) { return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); } : function set(key, value) { nativeMethod.call(this, key === 0 ? 0 : key, value); return this; } ); }; // eslint-disable-next-line max-len if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); })))) { // create collection constructor Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); InternalMetadataModule.REQUIRED = true; } else if (isForced(CONSTRUCTOR_NAME, true)) { var instance = new Constructor(); // early implementations not supports chaining var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); // most early implementations doesn't supports iterables, most modern - not close it correctly // eslint-disable-next-line no-new var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); // for early implementations -0 and +0 not the same var BUGGY_ZERO = !IS_WEAK && fails(function () { // V8 ~ Chromium 42- fails only with 5+ elements var $instance = new NativeConstructor(); var index = 5; while (index--) $instance[ADDER](index, index); return !$instance.has(-0); }); if (!ACCEPT_ITERABLES) { Constructor = wrapper(function (dummy, iterable) { anInstance(dummy, Constructor, CONSTRUCTOR_NAME); var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); return that; }); Constructor.prototype = NativePrototype; NativePrototype.constructor = Constructor; } if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { fixMethod('delete'); fixMethod('has'); IS_MAP && fixMethod('get'); } if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); // weak collections should not contains .clear method if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; } exported[CONSTRUCTOR_NAME] = Constructor; $({ global: true, forced: Constructor != NativeConstructor }, exported); setToStringTag(Constructor, CONSTRUCTOR_NAME); if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); return Constructor; }; /***/ }), /***/ "./node_modules/core-js/internals/copy-constructor-properties.js": /*!***********************************************************************!*\ !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! \***********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); module.exports = function (target, source) { var keys = ownKeys(source); var defineProperty = definePropertyModule.f; var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } }; /***/ }), /***/ "./node_modules/core-js/internals/correct-prototype-getter.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = !fails(function () { function F() { /* empty */ } F.prototype.constructor = null; return Object.getPrototypeOf(new F()) !== F.prototype; }); /***/ }), /***/ "./node_modules/core-js/internals/create-iterator-constructor.js": /*!***********************************************************************!*\ !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! \***********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var returnThis = function () { return this; }; module.exports = function (IteratorConstructor, NAME, next) { var TO_STRING_TAG = NAME + ' Iterator'; IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); Iterators[TO_STRING_TAG] = returnThis; return IteratorConstructor; }; /***/ }), /***/ "./node_modules/core-js/internals/create-property-descriptor.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /***/ "./node_modules/core-js/internals/define-iterator.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/define-iterator.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js"); var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); var IteratorPrototype = IteratorsCore.IteratorPrototype; var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; var ITERATOR = wellKnownSymbol('iterator'); var KEYS = 'keys'; var VALUES = 'values'; var ENTRIES = 'entries'; var returnThis = function () { return this; }; module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { createIteratorConstructor(IteratorConstructor, NAME, next); var getIterationMethod = function (KIND) { if (KIND === DEFAULT && defaultIterator) return defaultIterator; if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; switch (KIND) { case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; } return function () { return new IteratorConstructor(this); }; }; var TO_STRING_TAG = NAME + ' Iterator'; var INCORRECT_VALUES_NAME = false; var IterablePrototype = Iterable.prototype; var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; var CurrentIteratorPrototype, methods, KEY; // fix native if (anyNativeIterator) { CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { if (setPrototypeOf) { setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { hide(CurrentIteratorPrototype, ITERATOR, returnThis); } } // Set @@toStringTag to native iterators setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { INCORRECT_VALUES_NAME = true; defaultIterator = function values() { return nativeIterator.call(this); }; } // define iterator if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { hide(IterablePrototype, ITERATOR, defaultIterator); } Iterators[NAME] = defaultIterator; // export additional methods if (DEFAULT) { methods = { values: getIterationMethod(VALUES), keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), entries: getIterationMethod(ENTRIES) }; if (FORCED) for (KEY in methods) { if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { redefine(IterablePrototype, KEY, methods[KEY]); } } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); } return methods; }; /***/ }), /***/ "./node_modules/core-js/internals/descriptors.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/descriptors.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); // Thank's IE8 for his funny defineProperty module.exports = !fails(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /***/ "./node_modules/core-js/internals/document-create-element.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/document-create-element.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var document = global.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document) && isObject(document.createElement); module.exports = function (it) { return EXISTS ? document.createElement(it) : {}; }; /***/ }), /***/ "./node_modules/core-js/internals/enum-bug-keys.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports) { // IE8- don't enum bug keys module.exports = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; /***/ }), /***/ "./node_modules/core-js/internals/export.js": /*!**************************************************!*\ !*** ./node_modules/core-js/internals/export.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.noTargetGet - prevent calling a getter on target */ module.exports = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global; } else if (STATIC) { target = global[TARGET] || setGlobal(TARGET, {}); } else { target = (global[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.noTargetGet) { descriptor = getOwnPropertyDescriptor(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty === typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { hide(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); } }; /***/ }), /***/ "./node_modules/core-js/internals/fails.js": /*!*************************************************!*\ !*** ./node_modules/core-js/internals/fails.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = function (exec) { try { return !!exec(); } catch (error) { return true; } }; /***/ }), /***/ "./node_modules/core-js/internals/freezing.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/freezing.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = !fails(function () { return Object.isExtensible(Object.preventExtensions({})); }); /***/ }), /***/ "./node_modules/core-js/internals/function-to-string.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/internals/function-to-string.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); module.exports = shared('native-function-to-string', Function.toString); /***/ }), /***/ "./node_modules/core-js/internals/get-built-in.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/get-built-in.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(/*! ../internals/path */ "./node_modules/core-js/internals/path.js"); var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var aFunction = function (variable) { return typeof variable == 'function' ? variable : undefined; }; module.exports = function (namespace, method) { return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; }; /***/ }), /***/ "./node_modules/core-js/internals/get-iterator-method.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/get-iterator-method.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var ITERATOR = wellKnownSymbol('iterator'); module.exports = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; /***/ }), /***/ "./node_modules/core-js/internals/global.js": /*!**************************************************!*\ !*** ./node_modules/core-js/internals/global.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports) { var O = 'object'; var check = function (it) { return it && it.Math == Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = // eslint-disable-next-line no-undef check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global == O && global) || // eslint-disable-next-line no-new-func Function('return this')(); /***/ }), /***/ "./node_modules/core-js/internals/has.js": /*!***********************************************!*\ !*** ./node_modules/core-js/internals/has.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /***/ "./node_modules/core-js/internals/hidden-keys.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/hidden-keys.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = {}; /***/ }), /***/ "./node_modules/core-js/internals/hide.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/hide.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); module.exports = DESCRIPTORS ? function (object, key, value) { return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /***/ "./node_modules/core-js/internals/html.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/html.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); module.exports = getBuiltIn('document', 'documentElement'); /***/ }), /***/ "./node_modules/core-js/internals/ie8-dom-define.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); // Thank's IE8 for his funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { return Object.defineProperty(createElement('div'), 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /***/ "./node_modules/core-js/internals/indexed-object.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/indexed-object.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins return !Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) == 'String' ? split.call(it, '') : Object(it); } : Object; /***/ }), /***/ "./node_modules/core-js/internals/inherit-if-required.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/inherit-if-required.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); // makes subclassing work correct for wrapped built-ins module.exports = function ($this, dummy, Wrapper) { var NewTarget, NewTargetPrototype; if ( // it can work only with native `setPrototypeOf` setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype ) setPrototypeOf($this, NewTargetPrototype); return $this; }; /***/ }), /***/ "./node_modules/core-js/internals/internal-metadata.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/internal-metadata.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var FREEZING = __webpack_require__(/*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); var METADATA = uid('meta'); var id = 0; var isExtensible = Object.isExtensible || function () { return true; }; var setMetadata = function (it) { defineProperty(it, METADATA, { value: { objectID: 'O' + ++id, // object ID weakData: {} // weak collections IDs } }); }; var fastKey = function (it, create) { // return a primitive with prefix if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!has(it, METADATA)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; // not necessary to add metadata if (!create) return 'E'; // add missing metadata setMetadata(it); // return object ID } return it[METADATA].objectID; }; var getWeakData = function (it, create) { if (!has(it, METADATA)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return true; // not necessary to add metadata if (!create) return false; // add missing metadata setMetadata(it); // return the store of weak collections IDs } return it[METADATA].weakData; }; // add metadata on freeze-family methods calling var onFreeze = function (it) { if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); return it; }; var meta = module.exports = { REQUIRED: false, fastKey: fastKey, getWeakData: getWeakData, onFreeze: onFreeze }; hiddenKeys[METADATA] = true; /***/ }), /***/ "./node_modules/core-js/internals/internal-state.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/internal-state.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var WeakMap = global.WeakMap; var set, get, has; var enforce = function (it) { return has(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (NATIVE_WEAK_MAP) { var store = new WeakMap(); var wmget = store.get; var wmhas = store.has; var wmset = store.set; set = function (it, metadata) { wmset.call(store, it, metadata); return metadata; }; get = function (it) { return wmget.call(store, it) || {}; }; has = function (it) { return wmhas.call(store, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { hide(it, STATE, metadata); return metadata; }; get = function (it) { return objectHas(it, STATE) ? it[STATE] : {}; }; has = function (it) { return objectHas(it, STATE); }; } module.exports = { set: set, get: get, has: has, enforce: enforce, getterFor: getterFor }; /***/ }), /***/ "./node_modules/core-js/internals/is-array-iterator-method.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var ITERATOR = wellKnownSymbol('iterator'); var ArrayPrototype = Array.prototype; // check on default Array iterator module.exports = function (it) { return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); }; /***/ }), /***/ "./node_modules/core-js/internals/is-array.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/is-array.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); // `IsArray` abstract operation // https://tc39.github.io/ecma262/#sec-isarray module.exports = Array.isArray || function isArray(arg) { return classof(arg) == 'Array'; }; /***/ }), /***/ "./node_modules/core-js/internals/is-forced.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/is-forced.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; module.exports = isForced; /***/ }), /***/ "./node_modules/core-js/internals/is-object.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/is-object.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /***/ "./node_modules/core-js/internals/is-pure.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/is-pure.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = false; /***/ }), /***/ "./node_modules/core-js/internals/iterate.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/iterate.js ***! \***************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); var Result = function (stopped, result) { this.stopped = stopped; this.result = result; }; var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); var iterator, iterFn, index, length, result, step; if (IS_ITERATOR) { iterator = iterable; } else { iterFn = getIteratorMethod(iterable); if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators if (isArrayIteratorMethod(iterFn)) { for (index = 0, length = toLength(iterable.length); length > index; index++) { result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); if (result && result instanceof Result) return result; } return new Result(false); } iterator = iterFn.call(iterable); } while (!(step = iterator.next()).done) { result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); if (result && result instanceof Result) return result; } return new Result(false); }; iterate.stop = function (result) { return new Result(true, result); }; /***/ }), /***/ "./node_modules/core-js/internals/iterators-core.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/iterators-core.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var ITERATOR = wellKnownSymbol('iterator'); var BUGGY_SAFARI_ITERATORS = false; var returnThis = function () { return this; }; // `%IteratorPrototype%` object // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; if ([].keys) { arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; else { PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; } } if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); module.exports = { IteratorPrototype: IteratorPrototype, BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; /***/ }), /***/ "./node_modules/core-js/internals/iterators.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/iterators.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = {}; /***/ }), /***/ "./node_modules/core-js/internals/native-symbol.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/native-symbol.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = !!Object.getOwnPropertySymbols && !fails(function () { // Chrome 38 Symbol has incorrect toString conversion // eslint-disable-next-line no-undef return !String(Symbol()); }); /***/ }), /***/ "./node_modules/core-js/internals/native-weak-map.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/native-weak-map.js ***! \***********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); var WeakMap = global.WeakMap; module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); /***/ }), /***/ "./node_modules/core-js/internals/object-create.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/object-create.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js"); var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var IE_PROTO = sharedKey('IE_PROTO'); var PROTOTYPE = 'prototype'; var Empty = function () { /* empty */ }; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); var length = enumBugKeys.length; var lt = '<'; var script = 'script'; var gt = '>'; var js = 'java' + script + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); iframe.src = String(js); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); iframeDocument.close(); createDict = iframeDocument.F; while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; return createDict(); }; // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { Empty[PROTOTYPE] = anObject(O); result = new Empty(); Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : defineProperties(result, Properties); }; hiddenKeys[IE_PROTO] = true; /***/ }), /***/ "./node_modules/core-js/internals/object-define-properties.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/object-define-properties.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = objectKeys(Properties); var length = keys.length; var index = 0; var key; while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); return O; }; /***/ }), /***/ "./node_modules/core-js/internals/object-define-property.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/internals/object-define-property.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return nativeDefineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": /*!******************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { return nativeGetOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); }; /***/ }), /***/ "./node_modules/core-js/internals/object-get-own-property-names.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; /***/ }), /***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": /*!***************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { exports.f = Object.getOwnPropertySymbols; /***/ }), /***/ "./node_modules/core-js/internals/object-get-prototype-of.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); var IE_PROTO = sharedKey('IE_PROTO'); var ObjectPrototype = Object.prototype; // `Object.getPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.getprototypeof module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectPrototype : null; }; /***/ }), /***/ "./node_modules/core-js/internals/object-keys-internal.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/object-keys-internal.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var indexOf = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf; var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); module.exports = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~indexOf(result, key) || result.push(key); } return result; }; /***/ }), /***/ "./node_modules/core-js/internals/object-keys.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/object-keys.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys module.exports = Object.keys || function keys(O) { return internalObjectKeys(O, enumBugKeys); }; /***/ }), /***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var nativePropertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : nativePropertyIsEnumerable; /***/ }), /***/ "./node_modules/core-js/internals/object-set-prototype-of.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ "./node_modules/core-js/internals/a-possible-prototype.js"); // `Object.setPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.setprototypeof // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { var CORRECT_SETTER = false; var test = {}; var setter; try { setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; setter.call(test, []); CORRECT_SETTER = test instanceof Array; } catch (error) { /* empty */ } return function setPrototypeOf(O, proto) { anObject(O); aPossiblePrototype(proto); if (CORRECT_SETTER) setter.call(O, proto); else O.__proto__ = proto; return O; }; }() : undefined); /***/ }), /***/ "./node_modules/core-js/internals/own-keys.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/own-keys.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); // all object keys, includes non-enumerable and symbols module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = getOwnPropertyNamesModule.f(anObject(it)); var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; }; /***/ }), /***/ "./node_modules/core-js/internals/path.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/path.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); /***/ }), /***/ "./node_modules/core-js/internals/redefine-all.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/redefine-all.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); module.exports = function (target, src, options) { for (var key in src) redefine(target, key, src[key], options); return target; }; /***/ }), /***/ "./node_modules/core-js/internals/redefine.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/redefine.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var getInternalState = InternalStateModule.get; var enforceInternalState = InternalStateModule.enforce; var TEMPLATE = String(nativeFunctionToString).split('toString'); shared('inspectSource', function (it) { return nativeFunctionToString.call(it); }); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global) { if (simple) O[key] = value; else setGlobal(key, value); return; } else if (!unsafe) { delete O[key]; } else if (!noTargetGet && O[key]) { simple = true; } if (simple) O[key] = value; else hide(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); }); /***/ }), /***/ "./node_modules/core-js/internals/reflect-metadata.js": /*!************************************************************!*\ !*** ./node_modules/core-js/internals/reflect-metadata.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` var Map = __webpack_require__(/*! ../modules/es.map */ "./node_modules/core-js/modules/es.map.js"); var WeakMap = __webpack_require__(/*! ../modules/es.weak-map */ "./node_modules/core-js/modules/es.weak-map.js"); var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var metadata = shared('metadata'); var store = metadata.store || (metadata.store = new WeakMap()); var getOrCreateMetadataMap = function (target, targetKey, create) { var targetMetadata = store.get(target); if (!targetMetadata) { if (!create) return; store.set(target, targetMetadata = new Map()); } var keyMetadata = targetMetadata.get(targetKey); if (!keyMetadata) { if (!create) return; targetMetadata.set(targetKey, keyMetadata = new Map()); } return keyMetadata; }; var ordinaryHasOwnMetadata = function (MetadataKey, O, P) { var metadataMap = getOrCreateMetadataMap(O, P, false); return metadataMap === undefined ? false : metadataMap.has(MetadataKey); }; var ordinaryGetOwnMetadata = function (MetadataKey, O, P) { var metadataMap = getOrCreateMetadataMap(O, P, false); return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); }; var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) { getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); }; var ordinaryOwnMetadataKeys = function (target, targetKey) { var metadataMap = getOrCreateMetadataMap(target, targetKey, false); var keys = []; if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); }); return keys; }; var toMetadataKey = function (it) { return it === undefined || typeof it == 'symbol' ? it : String(it); }; module.exports = { store: store, getMap: getOrCreateMetadataMap, has: ordinaryHasOwnMetadata, get: ordinaryGetOwnMetadata, set: ordinaryDefineOwnMetadata, keys: ordinaryOwnMetadataKeys, toKey: toMetadataKey }; /***/ }), /***/ "./node_modules/core-js/internals/require-object-coercible.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/require-object-coercible.js ***! \********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { // `RequireObjectCoercible` abstract operation // https://tc39.github.io/ecma262/#sec-requireobjectcoercible module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /***/ "./node_modules/core-js/internals/set-global.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/set-global.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); module.exports = function (key, value) { try { hide(global, key, value); } catch (error) { global[key] = value; } return value; }; /***/ }), /***/ "./node_modules/core-js/internals/set-species.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/set-species.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var SPECIES = wellKnownSymbol('species'); module.exports = function (CONSTRUCTOR_NAME) { var Constructor = getBuiltIn(CONSTRUCTOR_NAME); var defineProperty = definePropertyModule.f; if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { defineProperty(Constructor, SPECIES, { configurable: true, get: function () { return this; } }); } }; /***/ }), /***/ "./node_modules/core-js/internals/set-to-string-tag.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); module.exports = function (it, TAG, STATIC) { if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); } }; /***/ }), /***/ "./node_modules/core-js/internals/shared-key.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/shared-key.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var keys = shared('keys'); module.exports = function (key) { return keys[key] || (keys[key] = uid(key)); }; /***/ }), /***/ "./node_modules/core-js/internals/shared.js": /*!**************************************************!*\ !*** ./node_modules/core-js/internals/shared.js ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var SHARED = '__core-js_shared__'; var store = global[SHARED] || setGlobal(SHARED, {}); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.2.1', mode: IS_PURE ? 'pure' : 'global', copyright: '© 2019 Denis Pushkarev (zloirock.ru)' }); /***/ }), /***/ "./node_modules/core-js/internals/to-absolute-index.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/to-absolute-index.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var max = Math.max; var min = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). module.exports = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min(integer, length); }; /***/ }), /***/ "./node_modules/core-js/internals/to-indexed-object.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/to-indexed-object.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { // toObject with fallback for non-array-like ES3 strings var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); module.exports = function (it) { return IndexedObject(requireObjectCoercible(it)); }; /***/ }), /***/ "./node_modules/core-js/internals/to-integer.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/to-integer.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { var ceil = Math.ceil; var floor = Math.floor; // `ToInteger` abstract operation // https://tc39.github.io/ecma262/#sec-tointeger module.exports = function (argument) { return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); }; /***/ }), /***/ "./node_modules/core-js/internals/to-length.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/to-length.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var min = Math.min; // `ToLength` abstract operation // https://tc39.github.io/ecma262/#sec-tolength module.exports = function (argument) { return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; /***/ }), /***/ "./node_modules/core-js/internals/to-object.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/to-object.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); // `ToObject` abstract operation // https://tc39.github.io/ecma262/#sec-toobject module.exports = function (argument) { return Object(requireObjectCoercible(argument)); }; /***/ }), /***/ "./node_modules/core-js/internals/to-primitive.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/to-primitive.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); // `ToPrimitive` abstract operation // https://tc39.github.io/ecma262/#sec-toprimitive // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (input, PREFERRED_STRING) { if (!isObject(input)) return input; var fn, val; if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }), /***/ "./node_modules/core-js/internals/uid.js": /*!***********************************************!*\ !*** ./node_modules/core-js/internals/uid.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports) { var id = 0; var postfix = Math.random(); module.exports = function (key) { return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; /***/ }), /***/ "./node_modules/core-js/internals/well-known-symbol.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/well-known-symbol.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); var Symbol = global.Symbol; var store = shared('wks'); module.exports = function (name) { return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; /***/ }), /***/ "./node_modules/core-js/modules/es.map.js": /*!************************************************!*\ !*** ./node_modules/core-js/modules/es.map.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); var collectionStrong = __webpack_require__(/*! ../internals/collection-strong */ "./node_modules/core-js/internals/collection-strong.js"); // `Map` constructor // https://tc39.github.io/ecma262/#sec-map-objects module.exports = collection('Map', function (get) { return function Map() { return get(this, arguments.length ? arguments[0] : undefined); }; }, collectionStrong, true); /***/ }), /***/ "./node_modules/core-js/modules/es.set.js": /*!************************************************!*\ !*** ./node_modules/core-js/modules/es.set.js ***! \************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); var collectionStrong = __webpack_require__(/*! ../internals/collection-strong */ "./node_modules/core-js/internals/collection-strong.js"); // `Set` constructor // https://tc39.github.io/ecma262/#sec-set-objects module.exports = collection('Set', function (get) { return function Set() { return get(this, arguments.length ? arguments[0] : undefined); }; }, collectionStrong); /***/ }), /***/ "./node_modules/core-js/modules/es.weak-map.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/modules/es.weak-map.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js"); var collection = __webpack_require__(/*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); var collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ "./node_modules/core-js/internals/collection-weak.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var enforceIternalState = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").enforce; var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; var isExtensible = Object.isExtensible; var InternalWeakMap; var wrapper = function (get) { return function WeakMap() { return get(this, arguments.length ? arguments[0] : undefined); }; }; // `WeakMap` constructor // https://tc39.github.io/ecma262/#sec-weakmap-constructor var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak, true, true); // IE11 WeakMap frozen keys fix // We can't use feature detection because it crash some old IE builds // https://github.com/zloirock/core-js/issues/485 if (NATIVE_WEAK_MAP && IS_IE11) { InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); InternalMetadataModule.REQUIRED = true; var WeakMapPrototype = $WeakMap.prototype; var nativeDelete = WeakMapPrototype['delete']; var nativeHas = WeakMapPrototype.has; var nativeGet = WeakMapPrototype.get; var nativeSet = WeakMapPrototype.set; redefineAll(WeakMapPrototype, { 'delete': function (key) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeDelete.call(this, key) || state.frozen['delete'](key); } return nativeDelete.call(this, key); }, has: function has(key) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeHas.call(this, key) || state.frozen.has(key); } return nativeHas.call(this, key); }, get: function get(key) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); } return nativeGet.call(this, key); }, set: function set(key, value) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); } else nativeSet.call(this, key, value); return this; } }); } /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.define-metadata.js": /*!************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.define-metadata.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.defineMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) { var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.delete-metadata.js": /*!************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.delete-metadata.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toMetadataKey = ReflectMetadataModule.toKey; var getOrCreateMetadataMap = ReflectMetadataModule.getMap; var store = ReflectMetadataModule.store; // `Reflect.deleteMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; if (metadataMap.size) return true; var targetMetadata = store.get(target); targetMetadata['delete'](targetKey); return !!targetMetadata.size || store['delete'](target); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js": /*!**************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` var Set = __webpack_require__(/*! ../modules/es.set */ "./node_modules/core-js/modules/es.set.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var iterate = __webpack_require__(/*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; var toMetadataKey = ReflectMetadataModule.toKey; var from = function (iter) { var result = []; iterate(iter, result.push, result); return result; }; var ordinaryMetadataKeys = function (O, P) { var oKeys = ordinaryOwnMetadataKeys(O, P); var parent = getPrototypeOf(O); if (parent === null) return oKeys; var pKeys = ordinaryMetadataKeys(parent, P); return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; }; // `Reflect.getMetadataKeys` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); return ordinaryMetadataKeys(anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.get-metadata.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-metadata.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var ordinaryHasOwnMetadata = ReflectMetadataModule.has; var ordinaryGetOwnMetadata = ReflectMetadataModule.get; var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryGetMetadata = function (MetadataKey, O, P) { var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); var parent = getPrototypeOf(O); return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; }; // `Reflect.getMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getMetadata: function getMetadata(metadataKey, target /* , targetKey */) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js": /*!******************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js ***! \******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadataKeys` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) { var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); return ordinaryOwnMetadataKeys(anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var ordinaryGetOwnMetadata = ReflectMetadataModule.get; var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.has-metadata.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.has-metadata.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var ordinaryHasOwnMetadata = ReflectMetadataModule.has; var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryHasMetadata = function (MetadataKey, O, P) { var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); if (hasOwn) return true; var parent = getPrototypeOf(O); return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; }; // `Reflect.hasMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var ordinaryHasOwnMetadata = ReflectMetadataModule.has; var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.hasOwnMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }), /***/ "./node_modules/core-js/modules/esnext.reflect.metadata.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.metadata.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__(/*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.metadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { metadata: function metadata(metadataKey, metadataValue) { return function decorator(target, key) { ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); }; } }); /***/ }), /***/ "./node_modules/core-js/proposals/reflect-metadata.js": /*!************************************************************!*\ !*** ./node_modules/core-js/proposals/reflect-metadata.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(/*! ../modules/esnext.reflect.define-metadata */ "./node_modules/core-js/modules/esnext.reflect.define-metadata.js"); __webpack_require__(/*! ../modules/esnext.reflect.delete-metadata */ "./node_modules/core-js/modules/esnext.reflect.delete-metadata.js"); __webpack_require__(/*! ../modules/esnext.reflect.get-metadata */ "./node_modules/core-js/modules/esnext.reflect.get-metadata.js"); __webpack_require__(/*! ../modules/esnext.reflect.get-metadata-keys */ "./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js"); __webpack_require__(/*! ../modules/esnext.reflect.get-own-metadata */ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js"); __webpack_require__(/*! ../modules/esnext.reflect.get-own-metadata-keys */ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js"); __webpack_require__(/*! ../modules/esnext.reflect.has-metadata */ "./node_modules/core-js/modules/esnext.reflect.has-metadata.js"); __webpack_require__(/*! ../modules/esnext.reflect.has-own-metadata */ "./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js"); __webpack_require__(/*! ../modules/esnext.reflect.metadata */ "./node_modules/core-js/modules/esnext.reflect.metadata.js"); /***/ }), /***/ "./node_modules/tslib/tslib.es6.js": /*!*****************************************!*\ !*** ./node_modules/tslib/tslib.es6.js ***! \*****************************************/ /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; } return __assign.apply(this, arguments); } function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __exportStar(m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result.default = mod; return result; } function __importDefault(mod) { return (mod && mod.__esModule) ? mod : { default: mod }; } /***/ }), /***/ "./node_modules/zone.js/dist/zone-evergreen.js": /*!*****************************************************!*\ !*** ./node_modules/zone.js/dist/zone-evergreen.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports) { /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const Zone$1 = (function (global) { const performance = global['performance']; function mark(name) { performance && performance['mark'] && performance['mark'](name); } function performanceMeasure(name, label) { performance && performance['measure'] && performance['measure'](name, label); } mark('Zone'); const checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true; if (global['Zone']) { // if global['Zone'] already exists (maybe zone.js was already loaded or // some other lib also registered a global object named Zone), we may need // to throw an error, but sometimes user may not want this error. // For example, // we have two web pages, page1 includes zone.js, page2 doesn't. // and the 1st time user load page1 and page2, everything work fine, // but when user load page2 again, error occurs because global['Zone'] already exists. // so we add a flag to let user choose whether to throw this error or not. // By default, if existing Zone is from zone.js, we will not throw the error. if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { throw new Error('Zone already loaded.'); } else { return global['Zone']; } } class Zone { constructor(parent, zoneSpec) { this._parent = parent; this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; this._properties = zoneSpec && zoneSpec.properties || {}; this._zoneDelegate = new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); } static assertZonePatched() { if (global['Promise'] !== patches['ZoneAwarePromise']) { throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + 'has been overwritten.\n' + 'Most likely cause is that a Promise polyfill has been loaded ' + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + 'If you must load one, do so before loading zone.js.)'); } } static get root() { let zone = Zone.current; while (zone.parent) { zone = zone.parent; } return zone; } static get current() { return _currentZoneFrame.zone; } static get currentTask() { return _currentTask; } static __load_patch(name, fn) { if (patches.hasOwnProperty(name)) { if (checkDuplicate) { throw Error('Already loaded patch: ' + name); } } else if (!global['__Zone_disable_' + name]) { const perfName = 'Zone:' + name; mark(perfName); patches[name] = fn(global, Zone, _api); performanceMeasure(perfName, perfName); } } get parent() { return this._parent; } get name() { return this._name; } get(key) { const zone = this.getZoneWith(key); if (zone) return zone._properties[key]; } getZoneWith(key) { let current = this; while (current) { if (current._properties.hasOwnProperty(key)) { return current; } current = current._parent; } return null; } fork(zoneSpec) { if (!zoneSpec) throw new Error('ZoneSpec required!'); return this._zoneDelegate.fork(this, zoneSpec); } wrap(callback, source) { if (typeof callback !== 'function') { throw new Error('Expecting function got: ' + callback); } const _callback = this._zoneDelegate.intercept(this, callback, source); const zone = this; return function () { return zone.runGuarded(_callback, this, arguments, source); }; } run(callback, applyThis, applyArgs, source) { _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); } finally { _currentZoneFrame = _currentZoneFrame.parent; } } runGuarded(callback, applyThis = null, applyArgs, source) { _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { try { return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); } catch (error) { if (this._zoneDelegate.handleError(this, error)) { throw error; } } } finally { _currentZoneFrame = _currentZoneFrame.parent; } } runTask(task, applyThis, applyArgs) { if (task.zone != this) { throw new Error('A task can only be run in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); } // https://github.com/angular/zone.js/issues/778, sometimes eventTask // will run in notScheduled(canceled) state, we should not try to // run such kind of task but just return if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { return; } const reEntryGuard = task.state != running; reEntryGuard && task._transitionTo(running, scheduled); task.runCount++; const previousTask = _currentTask; _currentTask = task; _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { if (task.type == macroTask && task.data && !task.data.isPeriodic) { task.cancelFn = undefined; } try { return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); } catch (error) { if (this._zoneDelegate.handleError(this, error)) { throw error; } } } finally { // if the task's state is notScheduled or unknown, then it has already been cancelled // we should not reset the state to scheduled if (task.state !== notScheduled && task.state !== unknown) { if (task.type == eventTask || (task.data && task.data.isPeriodic)) { reEntryGuard && task._transitionTo(scheduled, running); } else { task.runCount = 0; this._updateTaskCount(task, -1); reEntryGuard && task._transitionTo(notScheduled, running, notScheduled); } } _currentZoneFrame = _currentZoneFrame.parent; _currentTask = previousTask; } } scheduleTask(task) { if (task.zone && task.zone !== this) { // check if the task was rescheduled, the newZone // should not be the children of the original zone let newZone = this; while (newZone) { if (newZone === task.zone) { throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${task.zone.name}`); } newZone = newZone.parent; } } task._transitionTo(scheduling, notScheduled); const zoneDelegates = []; task._zoneDelegates = zoneDelegates; task._zone = this; try { task = this._zoneDelegate.scheduleTask(this, task); } catch (err) { // should set task's state to unknown when scheduleTask throw error // because the err may from reschedule, so the fromState maybe notScheduled task._transitionTo(unknown, scheduling, notScheduled); // TODO: @JiaLiPassion, should we check the result from handleError? this._zoneDelegate.handleError(this, err); throw err; } if (task._zoneDelegates === zoneDelegates) { // we have to check because internally the delegate can reschedule the task. this._updateTaskCount(task, 1); } if (task.state == scheduling) { task._transitionTo(scheduled, scheduling); } return task; } scheduleMicroTask(source, callback, data, customSchedule) { return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); } scheduleMacroTask(source, callback, data, customSchedule, customCancel) { return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); } scheduleEventTask(source, callback, data, customSchedule, customCancel) { return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); } cancelTask(task) { if (task.zone != this) throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); task._transitionTo(canceling, scheduled, running); try { this._zoneDelegate.cancelTask(this, task); } catch (err) { // if error occurs when cancelTask, transit the state to unknown task._transitionTo(unknown, canceling); this._zoneDelegate.handleError(this, err); throw err; } this._updateTaskCount(task, -1); task._transitionTo(notScheduled, canceling); task.runCount = 0; return task; } _updateTaskCount(task, count) { const zoneDelegates = task._zoneDelegates; if (count == -1) { task._zoneDelegates = null; } for (let i = 0; i < zoneDelegates.length; i++) { zoneDelegates[i]._updateTaskCount(task.type, count); } } } Zone.__symbol__ = __symbol__; const DELEGATE_ZS = { name: '', onHasTask: (delegate, _, target, hasTaskState) => delegate.hasTask(target, hasTaskState), onScheduleTask: (delegate, _, target, task) => delegate.scheduleTask(target, task), onInvokeTask: (delegate, _, target, task, applyThis, applyArgs) => delegate.invokeTask(target, task, applyThis, applyArgs), onCancelTask: (delegate, _, target, task) => delegate.cancelTask(target, task) }; class ZoneDelegate { constructor(zone, parentDelegate, zoneSpec) { this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 }; this.zone = zone; this._parentDelegate = parentDelegate; this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); this._interceptCurrZone = zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); this._handleErrorCurrZone = zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); this._invokeTaskCurrZone = zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); this._cancelTaskCurrZone = zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); this._hasTaskZS = null; this._hasTaskDlgt = null; this._hasTaskDlgtOwner = null; this._hasTaskCurrZone = null; const zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; const parentHasTask = parentDelegate && parentDelegate._hasTaskZS; if (zoneSpecHasTask || parentHasTask) { // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such // a case all task related interceptors must go through this ZD. We can't short circuit it. this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; this._hasTaskDlgt = parentDelegate; this._hasTaskDlgtOwner = this; this._hasTaskCurrZone = zone; if (!zoneSpec.onScheduleTask) { this._scheduleTaskZS = DELEGATE_ZS; this._scheduleTaskDlgt = parentDelegate; this._scheduleTaskCurrZone = this.zone; } if (!zoneSpec.onInvokeTask) { this._invokeTaskZS = DELEGATE_ZS; this._invokeTaskDlgt = parentDelegate; this._invokeTaskCurrZone = this.zone; } if (!zoneSpec.onCancelTask) { this._cancelTaskZS = DELEGATE_ZS; this._cancelTaskDlgt = parentDelegate; this._cancelTaskCurrZone = this.zone; } } } fork(targetZone, zoneSpec) { return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : new Zone(targetZone, zoneSpec); } intercept(targetZone, callback, source) { return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : callback; } invoke(targetZone, callback, applyThis, applyArgs, source) { return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs); } handleError(targetZone, error) { return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : true; } scheduleTask(targetZone, task) { let returnTask = task; if (this._scheduleTaskZS) { if (this._hasTaskZS) { returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); } returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); if (!returnTask) returnTask = task; } else { if (task.scheduleFn) { task.scheduleFn(task); } else if (task.type == microTask) { scheduleMicroTask(task); } else { throw new Error('Task is missing scheduleFn.'); } } return returnTask; } invokeTask(targetZone, task, applyThis, applyArgs) { return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs); } cancelTask(targetZone, task) { let value; if (this._cancelTaskZS) { value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); } else { if (!task.cancelFn) { throw Error('Task is not cancelable'); } value = task.cancelFn(task); } return value; } hasTask(targetZone, isEmpty) { // hasTask should not throw error so other ZoneDelegate // can still trigger hasTask callback try { this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); } catch (err) { this.handleError(targetZone, err); } } _updateTaskCount(type, count) { const counts = this._taskCounts; const prev = counts[type]; const next = counts[type] = prev + count; if (next < 0) { throw new Error('More tasks executed then were scheduled.'); } if (prev == 0 || next == 0) { const isEmpty = { microTask: counts['microTask'] > 0, macroTask: counts['macroTask'] > 0, eventTask: counts['eventTask'] > 0, change: type }; this.hasTask(this.zone, isEmpty); } } } class ZoneTask { constructor(type, source, callback, options, scheduleFn, cancelFn) { this._zone = null; this.runCount = 0; this._zoneDelegates = null; this._state = 'notScheduled'; this.type = type; this.source = source; this.data = options; this.scheduleFn = scheduleFn; this.cancelFn = cancelFn; this.callback = callback; const self = this; // TODO: @JiaLiPassion options should have interface if (type === eventTask && options && options.useG) { this.invoke = ZoneTask.invokeTask; } else { this.invoke = function () { return ZoneTask.invokeTask.call(global, self, this, arguments); }; } } static invokeTask(task, target, args) { if (!task) { task = this; } _numberOfNestedTaskFrames++; try { task.runCount++; return task.zone.runTask(task, target, args); } finally { if (_numberOfNestedTaskFrames == 1) { drainMicroTaskQueue(); } _numberOfNestedTaskFrames--; } } get zone() { return this._zone; } get state() { return this._state; } cancelScheduleRequest() { this._transitionTo(notScheduled, scheduling); } _transitionTo(toState, fromState1, fromState2) { if (this._state === fromState1 || this._state === fromState2) { this._state = toState; if (toState == notScheduled) { this._zoneDelegates = null; } } else { throw new Error(`${this.type} '${this.source}': can not transition to '${toState}', expecting state '${fromState1}'${fromState2 ? ' or \'' + fromState2 + '\'' : ''}, was '${this._state}'.`); } } toString() { if (this.data && typeof this.data.handleId !== 'undefined') { return this.data.handleId.toString(); } else { return Object.prototype.toString.call(this); } } // add toJSON method to prevent cyclic error when // call JSON.stringify(zoneTask) toJSON() { return { type: this.type, state: this.state, source: this.source, zone: this.zone.name, runCount: this.runCount }; } } ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// /// MICROTASK QUEUE ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// const symbolSetTimeout = __symbol__('setTimeout'); const symbolPromise = __symbol__('Promise'); const symbolThen = __symbol__('then'); let _microTaskQueue = []; let _isDrainingMicrotaskQueue = false; let nativeMicroTaskQueuePromise; function scheduleMicroTask(task) { // if we are not running in any task, and there has not been anything scheduled // we must bootstrap the initial task creation by manually scheduling the drain if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { // We are not running in Task, so we need to kickstart the microtask queue. if (!nativeMicroTaskQueuePromise) { if (global[symbolPromise]) { nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); } } if (nativeMicroTaskQueuePromise) { let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; if (!nativeThen) { // native Promise is not patchable, we need to use `then` directly // issue 1078 nativeThen = nativeMicroTaskQueuePromise['then']; } nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); } else { global[symbolSetTimeout](drainMicroTaskQueue, 0); } } task && _microTaskQueue.push(task); } function drainMicroTaskQueue() { if (!_isDrainingMicrotaskQueue) { _isDrainingMicrotaskQueue = true; while (_microTaskQueue.length) { const queue = _microTaskQueue; _microTaskQueue = []; for (let i = 0; i < queue.length; i++) { const task = queue[i]; try { task.zone.runTask(task, null, null); } catch (error) { _api.onUnhandledError(error); } } } _api.microtaskDrainDone(); _isDrainingMicrotaskQueue = false; } } ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// /// BOOTSTRAP ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// const NO_ZONE = { name: 'NO ZONE' }; const notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown'; const microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask'; const patches = {}; const _api = { symbol: __symbol__, currentZoneFrame: () => _currentZoneFrame, onUnhandledError: noop, microtaskDrainDone: noop, scheduleMicroTask: scheduleMicroTask, showUncaughtError: () => !Zone[__symbol__('ignoreConsoleErrorUncaughtError')], patchEventTarget: () => [], patchOnProperties: noop, patchMethod: () => noop, bindArguments: () => [], patchThen: () => noop, patchMacroTask: () => noop, setNativePromise: (NativePromise) => { // sometimes NativePromise.resolve static function // is not ready yet, (such as core-js/es6.promise) // so we need to check here. if (NativePromise && typeof NativePromise.resolve === 'function') { nativeMicroTaskQueuePromise = NativePromise.resolve(0); } }, patchEventPrototype: () => noop, isIEOrEdge: () => false, getGlobalObjects: () => undefined, ObjectDefineProperty: () => noop, ObjectGetOwnPropertyDescriptor: () => undefined, ObjectCreate: () => undefined, ArraySlice: () => [], patchClass: () => noop, wrapWithCurrentZone: () => noop, filterProperties: () => [], attachOriginToPatched: () => noop, _redefineProperty: () => noop, patchCallbacks: () => noop }; let _currentZoneFrame = { parent: null, zone: new Zone(null, null) }; let _currentTask = null; let _numberOfNestedTaskFrames = 0; function noop() { } function __symbol__(name) { return '__zone_symbol__' + name; } performanceMeasure('Zone', 'Zone'); return global['Zone'] = Zone; })(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ Zone.__load_patch('ZoneAwarePromise', (global, Zone, api) => { const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; const ObjectDefineProperty = Object.defineProperty; function readableObjectToString(obj) { if (obj && obj.toString === Object.prototype.toString) { const className = obj.constructor && obj.constructor.name; return (className ? className : '') + ': ' + JSON.stringify(obj); } return obj ? obj.toString() : Object.prototype.toString.call(obj); } const __symbol__ = api.symbol; const _uncaughtPromiseErrors = []; const symbolPromise = __symbol__('Promise'); const symbolThen = __symbol__('then'); const creationTrace = '__creationTrace__'; api.onUnhandledError = (e) => { if (api.showUncaughtError()) { const rejection = e && e.rejection; if (rejection) { console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); } else { console.error(e); } } }; api.microtaskDrainDone = () => { while (_uncaughtPromiseErrors.length) { while (_uncaughtPromiseErrors.length) { const uncaughtPromiseError = _uncaughtPromiseErrors.shift(); try { uncaughtPromiseError.zone.runGuarded(() => { throw uncaughtPromiseError; }); } catch (error) { handleUnhandledRejection(error); } } } }; const UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); function handleUnhandledRejection(e) { api.onUnhandledError(e); try { const handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; if (handler && typeof handler === 'function') { handler.call(this, e); } } catch (err) { } } function isThenable(value) { return value && value.then; } function forwardResolution(value) { return value; } function forwardRejection(rejection) { return ZoneAwarePromise.reject(rejection); } const symbolState = __symbol__('state'); const symbolValue = __symbol__('value'); const symbolFinally = __symbol__('finally'); const symbolParentPromiseValue = __symbol__('parentPromiseValue'); const symbolParentPromiseState = __symbol__('parentPromiseState'); const source = 'Promise.then'; const UNRESOLVED = null; const RESOLVED = true; const REJECTED = false; const REJECTED_NO_CATCH = 0; function makeResolver(promise, state) { return (v) => { try { resolvePromise(promise, state, v); } catch (err) { resolvePromise(promise, false, err); } // Do not return value or you will break the Promise spec. }; } const once = function () { let wasCalled = false; return function wrapper(wrappedFunction) { return function () { if (wasCalled) { return; } wasCalled = true; wrappedFunction.apply(null, arguments); }; }; }; const TYPE_ERROR = 'Promise resolved with itself'; const CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); // Promise Resolution function resolvePromise(promise, state, value) { const onceWrapper = once(); if (promise === value) { throw new TypeError(TYPE_ERROR); } if (promise[symbolState] === UNRESOLVED) { // should only get value.then once based on promise spec. let then = null; try { if (typeof value === 'object' || typeof value === 'function') { then = value && value.then; } } catch (err) { onceWrapper(() => { resolvePromise(promise, false, err); })(); return promise; } // if (value instanceof ZoneAwarePromise) { if (state !== REJECTED && value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { clearRejectedNoCatch(value); resolvePromise(promise, value[symbolState], value[symbolValue]); } else if (state !== REJECTED && typeof then === 'function') { try { then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); } catch (err) { onceWrapper(() => { resolvePromise(promise, false, err); })(); } } else { promise[symbolState] = state; const queue = promise[symbolValue]; promise[symbolValue] = value; if (promise[symbolFinally] === symbolFinally) { // the promise is generated by Promise.prototype.finally if (state === RESOLVED) { // the state is resolved, should ignore the value // and use parent promise value promise[symbolState] = promise[symbolParentPromiseState]; promise[symbolValue] = promise[symbolParentPromiseValue]; } } // record task information in value when error occurs, so we can // do some additional work such as render longStackTrace if (state === REJECTED && value instanceof Error) { // check if longStackTraceZone is here const trace = Zone.currentTask && Zone.currentTask.data && Zone.currentTask.data[creationTrace]; if (trace) { // only keep the long stack trace into error when in longStackTraceZone ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace }); } } for (let i = 0; i < queue.length;) { scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); } if (queue.length == 0 && state == REJECTED) { promise[symbolState] = REJECTED_NO_CATCH; try { // try to print more readable error log throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + (value && value.stack ? '\n' + value.stack : '')); } catch (err) { const error = err; error.rejection = value; error.promise = promise; error.zone = Zone.current; error.task = Zone.currentTask; _uncaughtPromiseErrors.push(error); api.scheduleMicroTask(); // to make sure that it is running } } } } // Resolving an already resolved promise is a noop. return promise; } const REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); function clearRejectedNoCatch(promise) { if (promise[symbolState] === REJECTED_NO_CATCH) { // if the promise is rejected no catch status // and queue.length > 0, means there is a error handler // here to handle the rejected promise, we should trigger // windows.rejectionhandled eventHandler or nodejs rejectionHandled // eventHandler try { const handler = Zone[REJECTION_HANDLED_HANDLER]; if (handler && typeof handler === 'function') { handler.call(this, { rejection: promise[symbolValue], promise: promise }); } } catch (err) { } promise[symbolState] = REJECTED; for (let i = 0; i < _uncaughtPromiseErrors.length; i++) { if (promise === _uncaughtPromiseErrors[i].promise) { _uncaughtPromiseErrors.splice(i, 1); } } } } function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { clearRejectedNoCatch(promise); const promiseState = promise[symbolState]; const delegate = promiseState ? (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution : (typeof onRejected === 'function') ? onRejected : forwardRejection; zone.scheduleMicroTask(source, () => { try { const parentPromiseValue = promise[symbolValue]; const isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally]; if (isFinallyPromise) { // if the promise is generated from finally call, keep parent promise's state and value chainPromise[symbolParentPromiseValue] = parentPromiseValue; chainPromise[symbolParentPromiseState] = promiseState; } // should not pass value to finally callback const value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]); resolvePromise(chainPromise, true, value); } catch (error) { // if error occurs, should always return this error resolvePromise(chainPromise, false, error); } }, chainPromise); } const ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; class ZoneAwarePromise { constructor(executor) { const promise = this; if (!(promise instanceof ZoneAwarePromise)) { throw new Error('Must be an instanceof Promise.'); } promise[symbolState] = UNRESOLVED; promise[symbolValue] = []; // queue; try { executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); } catch (error) { resolvePromise(promise, false, error); } } static toString() { return ZONE_AWARE_PROMISE_TO_STRING; } static resolve(value) { return resolvePromise(new this(null), RESOLVED, value); } static reject(error) { return resolvePromise(new this(null), REJECTED, error); } static race(values) { let resolve; let reject; let promise = new this((res, rej) => { resolve = res; reject = rej; }); function onResolve(value) { resolve(value); } function onReject(error) { reject(error); } for (let value of values) { if (!isThenable(value)) { value = this.resolve(value); } value.then(onResolve, onReject); } return promise; } static all(values) { let resolve; let reject; let promise = new this((res, rej) => { resolve = res; reject = rej; }); // Start at 2 to prevent prematurely resolving if .then is called immediately. let unresolvedCount = 2; let valueIndex = 0; const resolvedValues = []; for (let value of values) { if (!isThenable(value)) { value = this.resolve(value); } const curValueIndex = valueIndex; value.then((value) => { resolvedValues[curValueIndex] = value; unresolvedCount--; if (unresolvedCount === 0) { resolve(resolvedValues); } }, reject); unresolvedCount++; valueIndex++; } // Make the unresolvedCount zero-based again. unresolvedCount -= 2; if (unresolvedCount === 0) { resolve(resolvedValues); } return promise; } get [Symbol.toStringTag]() { return 'Promise'; } then(onFulfilled, onRejected) { const chainPromise = new this.constructor(null); const zone = Zone.current; if (this[symbolState] == UNRESOLVED) { this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); } else { scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); } return chainPromise; } catch(onRejected) { return this.then(null, onRejected); } finally(onFinally) { const chainPromise = new this.constructor(null); chainPromise[symbolFinally] = symbolFinally; const zone = Zone.current; if (this[symbolState] == UNRESOLVED) { this[symbolValue].push(zone, chainPromise, onFinally, onFinally); } else { scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); } return chainPromise; } } // Protect against aggressive optimizers dropping seemingly unused properties. // E.g. Closure Compiler in advanced mode. ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; ZoneAwarePromise['race'] = ZoneAwarePromise.race; ZoneAwarePromise['all'] = ZoneAwarePromise.all; const NativePromise = global[symbolPromise] = global['Promise']; const ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise'); let desc = ObjectGetOwnPropertyDescriptor(global, 'Promise'); if (!desc || desc.configurable) { desc && delete desc.writable; desc && delete desc.value; if (!desc) { desc = { configurable: true, enumerable: true }; } desc.get = function () { // if we already set ZoneAwarePromise, use patched one // otherwise return native one. return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise]; }; desc.set = function (NewNativePromise) { if (NewNativePromise === ZoneAwarePromise) { // if the NewNativePromise is ZoneAwarePromise // save to global global[ZONE_AWARE_PROMISE] = NewNativePromise; } else { // if the NewNativePromise is not ZoneAwarePromise // for example: after load zone.js, some library just // set es6-promise to global, if we set it to global // directly, assertZonePatched will fail and angular // will not loaded, so we just set the NewNativePromise // to global[symbolPromise], so the result is just like // we load ES6 Promise before zone.js global[symbolPromise] = NewNativePromise; if (!NewNativePromise.prototype[symbolThen]) { patchThen(NewNativePromise); } api.setNativePromise(NewNativePromise); } }; ObjectDefineProperty(global, 'Promise', desc); } global['Promise'] = ZoneAwarePromise; const symbolThenPatched = __symbol__('thenPatched'); function patchThen(Ctor) { const proto = Ctor.prototype; const prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); if (prop && (prop.writable === false || !prop.configurable)) { // check Ctor.prototype.then propertyDescriptor is writable or not // in meteor env, writable is false, we should ignore such case return; } const originalThen = proto.then; // Keep a reference to the original method. proto[symbolThen] = originalThen; Ctor.prototype.then = function (onResolve, onReject) { const wrapped = new ZoneAwarePromise((resolve, reject) => { originalThen.call(this, resolve, reject); }); return wrapped.then(onResolve, onReject); }; Ctor[symbolThenPatched] = true; } api.patchThen = patchThen; function zoneify(fn) { return function () { let resultPromise = fn.apply(this, arguments); if (resultPromise instanceof ZoneAwarePromise) { return resultPromise; } let ctor = resultPromise.constructor; if (!ctor[symbolThenPatched]) { patchThen(ctor); } return resultPromise; }; } if (NativePromise) { patchThen(NativePromise); const fetch = global['fetch']; if (typeof fetch == 'function') { global[api.symbol('fetch')] = fetch; global['fetch'] = zoneify(fetch); } } // This is not part of public API, but it is useful for tests, so we expose it. Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; return ZoneAwarePromise; }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Suppress closure compiler errors about unknown 'Zone' variable * @fileoverview * @suppress {undefinedVars,globalThis,missingRequire} */ // issue #989, to reduce bundle size, use short name /** Object.getOwnPropertyDescriptor */ const ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; /** Object.defineProperty */ const ObjectDefineProperty = Object.defineProperty; /** Object.getPrototypeOf */ const ObjectGetPrototypeOf = Object.getPrototypeOf; /** Object.create */ const ObjectCreate = Object.create; /** Array.prototype.slice */ const ArraySlice = Array.prototype.slice; /** addEventListener string const */ const ADD_EVENT_LISTENER_STR = 'addEventListener'; /** removeEventListener string const */ const REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; /** zoneSymbol addEventListener */ const ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); /** zoneSymbol removeEventListener */ const ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); /** true string const */ const TRUE_STR = 'true'; /** false string const */ const FALSE_STR = 'false'; /** __zone_symbol__ string const */ const ZONE_SYMBOL_PREFIX = '__zone_symbol__'; function wrapWithCurrentZone(callback, source) { return Zone.current.wrap(callback, source); } function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); } const zoneSymbol = Zone.__symbol__; const isWindowExists = typeof window !== 'undefined'; const internalWindow = isWindowExists ? window : undefined; const _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; const REMOVE_ATTRIBUTE = 'removeAttribute'; const NULL_ON_PROP_VALUE = [null]; function bindArguments(args, source) { for (let i = args.length - 1; i >= 0; i--) { if (typeof args[i] === 'function') { args[i] = wrapWithCurrentZone(args[i], source + '_' + i); } } return args; } function patchPrototype(prototype, fnNames) { const source = prototype.constructor['name']; for (let i = 0; i < fnNames.length; i++) { const name = fnNames[i]; const delegate = prototype[name]; if (delegate) { const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); if (!isPropertyWritable(prototypeDesc)) { continue; } prototype[name] = ((delegate) => { const patched = function () { return delegate.apply(this, bindArguments(arguments, source + '.' + name)); }; attachOriginToPatched(patched, delegate); return patched; })(delegate); } } } function isPropertyWritable(propertyDesc) { if (!propertyDesc) { return true; } if (propertyDesc.writable === false) { return false; } return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); } const isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope); // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify // this code. const isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]'); const isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); // we are in electron of nw, so we are both browser and nodejs // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify // this code. const isMix = typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]' && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); const zoneSymbolEventNames = {}; const wrapFn = function (event) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; if (!event) { return; } let eventNameSymbol = zoneSymbolEventNames[event.type]; if (!eventNameSymbol) { eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type); } const target = this || event.target || _global; const listener = target[eventNameSymbol]; let result; if (isBrowser && target === internalWindow && event.type === 'error') { // window.onerror have different signiture // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror // and onerror callback will prevent default when callback return true const errorEvent = event; result = listener && listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); if (result === true) { event.preventDefault(); } } else { result = listener && listener.apply(this, arguments); if (result != undefined && !result) { event.preventDefault(); } } return result; }; function patchProperty(obj, prop, prototype) { let desc = ObjectGetOwnPropertyDescriptor(obj, prop); if (!desc && prototype) { // when patch window object, use prototype to check prop exist or not const prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); if (prototypeDesc) { desc = { enumerable: true, configurable: true }; } } // if the descriptor not exists or is not configurable // just return if (!desc || !desc.configurable) { return; } const onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { return; } // A property descriptor cannot have getter/setter and be writable // deleting the writable and value properties avoids this error: // // TypeError: property descriptors must not specify a value or be writable when a // getter or setter has been specified delete desc.writable; delete desc.value; const originalDescGet = desc.get; const originalDescSet = desc.set; // substr(2) cuz 'onclick' -> 'click', etc const eventName = prop.substr(2); let eventNameSymbol = zoneSymbolEventNames[eventName]; if (!eventNameSymbol) { eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName); } desc.set = function (newValue) { // in some of windows's onproperty callback, this is undefined // so we need to check it let target = this; if (!target && obj === _global) { target = _global; } if (!target) { return; } let previousValue = target[eventNameSymbol]; if (previousValue) { target.removeEventListener(eventName, wrapFn); } // issue #978, when onload handler was added before loading zone.js // we should remove it with originalDescSet if (originalDescSet) { originalDescSet.apply(target, NULL_ON_PROP_VALUE); } if (typeof newValue === 'function') { target[eventNameSymbol] = newValue; target.addEventListener(eventName, wrapFn, false); } else { target[eventNameSymbol] = null; } }; // The getter would return undefined for unassigned properties but the default value of an // unassigned property is null desc.get = function () { // in some of windows's onproperty callback, this is undefined // so we need to check it let target = this; if (!target && obj === _global) { target = _global; } if (!target) { return null; } const listener = target[eventNameSymbol]; if (listener) { return listener; } else if (originalDescGet) { // result will be null when use inline event attribute, // such as // because the onclick function is internal raw uncompiled handler // the onclick will be evaluated when first time event was triggered or // the property is accessed, https://github.com/angular/zone.js/issues/525 // so we should use original native get to retrieve the handler let value = originalDescGet && originalDescGet.call(this); if (value) { desc.set.call(this, value); if (typeof target[REMOVE_ATTRIBUTE] === 'function') { target.removeAttribute(prop); } return value; } } return null; }; ObjectDefineProperty(obj, prop, desc); obj[onPropPatchedSymbol] = true; } function patchOnProperties(obj, properties, prototype) { if (properties) { for (let i = 0; i < properties.length; i++) { patchProperty(obj, 'on' + properties[i], prototype); } } else { const onProperties = []; for (const prop in obj) { if (prop.substr(0, 2) == 'on') { onProperties.push(prop); } } for (let j = 0; j < onProperties.length; j++) { patchProperty(obj, onProperties[j], prototype); } } } const originalInstanceKey = zoneSymbol('originalInstance'); // wrap some native API on `window` function patchClass(className) { const OriginalClass = _global[className]; if (!OriginalClass) return; // keep original class in global _global[zoneSymbol(className)] = OriginalClass; _global[className] = function () { const a = bindArguments(arguments, className); switch (a.length) { case 0: this[originalInstanceKey] = new OriginalClass(); break; case 1: this[originalInstanceKey] = new OriginalClass(a[0]); break; case 2: this[originalInstanceKey] = new OriginalClass(a[0], a[1]); break; case 3: this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); break; case 4: this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); break; default: throw new Error('Arg list too long.'); } }; // attach original delegate to patched function attachOriginToPatched(_global[className], OriginalClass); const instance = new OriginalClass(function () { }); let prop; for (prop in instance) { // https://bugs.webkit.org/show_bug.cgi?id=44721 if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue; (function (prop) { if (typeof instance[prop] === 'function') { _global[className].prototype[prop] = function () { return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); }; } else { ObjectDefineProperty(_global[className].prototype, prop, { set: function (fn) { if (typeof fn === 'function') { this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); // keep callback in wrapped function so we can // use it in Function.prototype.toString to return // the native one. attachOriginToPatched(this[originalInstanceKey][prop], fn); } else { this[originalInstanceKey][prop] = fn; } }, get: function () { return this[originalInstanceKey][prop]; } }); } }(prop)); } for (prop in OriginalClass) { if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { _global[className][prop] = OriginalClass[prop]; } } } function copySymbolProperties(src, dest) { if (typeof Object.getOwnPropertySymbols !== 'function') { return; } const symbols = Object.getOwnPropertySymbols(src); symbols.forEach((symbol) => { const desc = Object.getOwnPropertyDescriptor(src, symbol); Object.defineProperty(dest, symbol, { get: function () { return src[symbol]; }, set: function (value) { if (desc && (!desc.writable || typeof desc.set !== 'function')) { // if src[symbol] is not writable or not have a setter, just return return; } src[symbol] = value; }, enumerable: desc ? desc.enumerable : true, configurable: desc ? desc.configurable : true }); }); } let shouldCopySymbolProperties = false; function patchMethod(target, name, patchFn) { let proto = target; while (proto && !proto.hasOwnProperty(name)) { proto = ObjectGetPrototypeOf(proto); } if (!proto && target[name]) { // somehow we did not find it, but we can see it. This happens on IE for Window properties. proto = target; } const delegateName = zoneSymbol(name); let delegate = null; if (proto && !(delegate = proto[delegateName])) { delegate = proto[delegateName] = proto[name]; // check whether proto[name] is writable // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob const desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); if (isPropertyWritable(desc)) { const patchDelegate = patchFn(delegate, delegateName, name); proto[name] = function () { return patchDelegate(this, arguments); }; attachOriginToPatched(proto[name], delegate); if (shouldCopySymbolProperties) { copySymbolProperties(delegate, proto[name]); } } } return delegate; } // TODO: @JiaLiPassion, support cancel task later if necessary function patchMacroTask(obj, funcName, metaCreator) { let setNative = null; function scheduleTask(task) { const data = task.data; data.args[data.cbIdx] = function () { task.invoke.apply(this, arguments); }; setNative.apply(data.target, data.args); return task; } setNative = patchMethod(obj, funcName, (delegate) => function (self, args) { const meta = metaCreator(self, args); if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); } else { // cause an error by calling it directly. return delegate.apply(self, args); } }); } function attachOriginToPatched(patched, original) { patched[zoneSymbol('OriginalDelegate')] = original; } let isDetectedIEOrEdge = false; let ieOrEdge = false; function isIE() { try { const ua = internalWindow.navigator.userAgent; if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { return true; } } catch (error) { } return false; } function isIEOrEdge() { if (isDetectedIEOrEdge) { return ieOrEdge; } isDetectedIEOrEdge = true; try { const ua = internalWindow.navigator.userAgent; if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { ieOrEdge = true; } } catch (error) { } return ieOrEdge; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // override Function.prototype.toString to make zone.js patched function // look like native function Zone.__load_patch('toString', (global) => { // patch Func.prototype.toString to let them look like native const originalFunctionToString = Function.prototype.toString; const ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); const PROMISE_SYMBOL = zoneSymbol('Promise'); const ERROR_SYMBOL = zoneSymbol('Error'); const newFunctionToString = function toString() { if (typeof this === 'function') { const originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; if (originalDelegate) { if (typeof originalDelegate === 'function') { return originalFunctionToString.call(originalDelegate); } else { return Object.prototype.toString.call(originalDelegate); } } if (this === Promise) { const nativePromise = global[PROMISE_SYMBOL]; if (nativePromise) { return originalFunctionToString.call(nativePromise); } } if (this === Error) { const nativeError = global[ERROR_SYMBOL]; if (nativeError) { return originalFunctionToString.call(nativeError); } } } return originalFunctionToString.call(this); }; newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; Function.prototype.toString = newFunctionToString; // patch Object.prototype.toString to let them look like native const originalObjectToString = Object.prototype.toString; const PROMISE_OBJECT_TO_STRING = '[object Promise]'; Object.prototype.toString = function () { if (this instanceof Promise) { return PROMISE_OBJECT_TO_STRING; } return originalObjectToString.call(this); }; }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ let passiveSupported = false; if (typeof window !== 'undefined') { try { const options = Object.defineProperty({}, 'passive', { get: function () { passiveSupported = true; } }); window.addEventListener('test', options, options); window.removeEventListener('test', options, options); } catch (err) { passiveSupported = false; } } // an identifier to tell ZoneTask do not create a new invoke closure const OPTIMIZED_ZONE_EVENT_TASK_DATA = { useG: true }; const zoneSymbolEventNames$1 = {}; const globalSources = {}; const EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; const IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped'); function patchEventTarget(_global, apis, patchOptions) { const ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR; const REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR; const LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners'; const REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners'; const zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); const ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; const PREPEND_EVENT_LISTENER = 'prependListener'; const PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; const invokeTask = function (task, target, event) { // for better performance, check isRemoved which is set // by removeEventListener if (task.isRemoved) { return; } const delegate = task.callback; if (typeof delegate === 'object' && delegate.handleEvent) { // create the bind version of handleEvent when invoke task.callback = (event) => delegate.handleEvent(event); task.originalDelegate = delegate; } // invoke static task.invoke task.invoke(task, target, [event]); const options = task.options; if (options && typeof options === 'object' && options.once) { // if options.once is true, after invoke once remove listener here // only browser need to do this, nodejs eventEmitter will cal removeListener // inside EventEmitter.once const delegate = task.originalDelegate ? task.originalDelegate : task.callback; target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate, options); } }; // global shared zoneAwareCallback to handle all event callback with capture = false const globalZoneAwareCallback = function (event) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; if (!event) { return; } // event.target is needed for Samsung TV and SourceBuffer // || global is needed https://github.com/angular/zone.js/issues/190 const target = this || event.target || _global; const tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]]; if (tasks) { // invoke all tasks which attached to current target with given event.type and capture = false // for performance concern, if task.length === 1, just invoke if (tasks.length === 1) { invokeTask(tasks[0], target, event); } else { // https://github.com/angular/zone.js/issues/836 // copy the tasks array before invoke, to avoid // the callback will remove itself or other listener const copyTasks = tasks.slice(); for (let i = 0; i < copyTasks.length; i++) { if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { break; } invokeTask(copyTasks[i], target, event); } } } }; // global shared zoneAwareCallback to handle all event callback with capture = true const globalZoneAwareCaptureCallback = function (event) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; if (!event) { return; } // event.target is needed for Samsung TV and SourceBuffer // || global is needed https://github.com/angular/zone.js/issues/190 const target = this || event.target || _global; const tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]]; if (tasks) { // invoke all tasks which attached to current target with given event.type and capture = false // for performance concern, if task.length === 1, just invoke if (tasks.length === 1) { invokeTask(tasks[0], target, event); } else { // https://github.com/angular/zone.js/issues/836 // copy the tasks array before invoke, to avoid // the callback will remove itself or other listener const copyTasks = tasks.slice(); for (let i = 0; i < copyTasks.length; i++) { if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { break; } invokeTask(copyTasks[i], target, event); } } } }; function patchEventTargetMethods(obj, patchOptions) { if (!obj) { return false; } let useGlobalCallback = true; if (patchOptions && patchOptions.useG !== undefined) { useGlobalCallback = patchOptions.useG; } const validateHandler = patchOptions && patchOptions.vh; let checkDuplicate = true; if (patchOptions && patchOptions.chkDup !== undefined) { checkDuplicate = patchOptions.chkDup; } let returnTarget = false; if (patchOptions && patchOptions.rt !== undefined) { returnTarget = patchOptions.rt; } let proto = obj; while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { proto = ObjectGetPrototypeOf(proto); } if (!proto && obj[ADD_EVENT_LISTENER]) { // somehow we did not find it, but we can see it. This happens on IE for Window properties. proto = obj; } if (!proto) { return false; } if (proto[zoneSymbolAddEventListener]) { return false; } const eventNameToString = patchOptions && patchOptions.eventNameToString; // a shared global taskData to pass data for scheduleEventTask // so we do not need to create a new object just for pass some data const taskData = {}; const nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; const nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = proto[REMOVE_EVENT_LISTENER]; const nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = proto[LISTENERS_EVENT_LISTENER]; const nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; let nativePrependEventListener; if (patchOptions && patchOptions.prepend) { nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend]; } function checkIsPassive(task) { if (!passiveSupported && typeof taskData.options !== 'boolean' && typeof taskData.options !== 'undefined' && taskData.options !== null) { // options is a non-null non-undefined object // passive is not supported // don't pass options as object // just pass capture as a boolean task.options = !!taskData.options.capture; taskData.options = task.options; } } const customScheduleGlobal = function (task) { // if there is already a task for the eventName + capture, // just return, because we use the shared globalZoneAwareCallback here. if (taskData.isExisting) { return; } checkIsPassive(task); return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); }; const customCancelGlobal = function (task) { // if task is not marked as isRemoved, this call is directly // from Zone.prototype.cancelTask, we should remove the task // from tasksList of target first if (!task.isRemoved) { const symbolEventNames = zoneSymbolEventNames$1[task.eventName]; let symbolEventName; if (symbolEventNames) { symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; } const existingTasks = symbolEventName && task.target[symbolEventName]; if (existingTasks) { for (let i = 0; i < existingTasks.length; i++) { const existingTask = existingTasks[i]; if (existingTask === task) { existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check task.isRemoved = true; if (existingTasks.length === 0) { // all tasks for the eventName + capture have gone, // remove globalZoneAwareCallback and remove the task cache from target task.allRemoved = true; task.target[symbolEventName] = null; } break; } } } } // if all tasks for the eventName + capture have gone, // we will really remove the global event callback, // if not, return if (!task.allRemoved) { return; } return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); }; const customScheduleNonGlobal = function (task) { checkIsPassive(task); return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); }; const customSchedulePrepend = function (task) { return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); }; const customCancelNonGlobal = function (task) { return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); }; const customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; const customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; const compareTaskCallbackVsDelegate = function (task, delegate) { const typeOfDelegate = typeof delegate; return (typeOfDelegate === 'function' && task.callback === delegate) || (typeOfDelegate === 'object' && task.originalDelegate === delegate); }; const compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate; const blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')]; const makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget = false, prepend = false) { return function () { const target = this || _global; const eventName = arguments[0]; let delegate = arguments[1]; if (!delegate) { return nativeListener.apply(this, arguments); } if (isNode && eventName === 'uncaughtException') { // don't patch uncaughtException of nodejs to prevent endless loop return nativeListener.apply(this, arguments); } // don't create the bind delegate function for handleEvent // case here to improve addEventListener performance // we will create the bind delegate when invoke let isHandleEvent = false; if (typeof delegate !== 'function') { if (!delegate.handleEvent) { return nativeListener.apply(this, arguments); } isHandleEvent = true; } if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { return; } const options = arguments[2]; if (blackListedEvents) { // check black list for (let i = 0; i < blackListedEvents.length; i++) { if (eventName === blackListedEvents[i]) { return nativeListener.apply(this, arguments); } } } let capture; let once = false; if (options === undefined) { capture = false; } else if (options === true) { capture = true; } else if (options === false) { capture = false; } else { capture = options ? !!options.capture : false; once = options ? !!options.once : false; } const zone = Zone.current; const symbolEventNames = zoneSymbolEventNames$1[eventName]; let symbolEventName; if (!symbolEventNames) { // the code is duplicate, but I just want to get some better performance const falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; const trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; const symbol = ZONE_SYMBOL_PREFIX + falseEventName; const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; zoneSymbolEventNames$1[eventName] = {}; zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol; zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture; symbolEventName = capture ? symbolCapture : symbol; } else { symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; } let existingTasks = target[symbolEventName]; let isExisting = false; if (existingTasks) { // already have task registered isExisting = true; if (checkDuplicate) { for (let i = 0; i < existingTasks.length; i++) { if (compare(existingTasks[i], delegate)) { // same callback, same capture, same event name, just return return; } } } } else { existingTasks = target[symbolEventName] = []; } let source; const constructorName = target.constructor['name']; const targetSource = globalSources[constructorName]; if (targetSource) { source = targetSource[eventName]; } if (!source) { source = constructorName + addSource + (eventNameToString ? eventNameToString(eventName) : eventName); } // do not create a new object as task.data to pass those things // just use the global shared one taskData.options = options; if (once) { // if addEventListener with once options, we don't pass it to // native addEventListener, instead we keep the once setting // and handle ourselves. taskData.options.once = false; } taskData.target = target; taskData.capture = capture; taskData.eventName = eventName; taskData.isExisting = isExisting; const data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; // keep taskData into data to allow onScheduleEventTask to access the task information if (data) { data.taskData = taskData; } const task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); // should clear taskData.target to avoid memory leak // issue, https://github.com/angular/angular/issues/20442 taskData.target = null; // need to clear up taskData because it is a global object if (data) { data.taskData = null; } // have to save those information to task in case // application may call task.zone.cancelTask() directly if (once) { options.once = true; } if (!(!passiveSupported && typeof task.options === 'boolean')) { // if not support passive, and we pass an option object // to addEventListener, we should save the options to task task.options = options; } task.target = target; task.capture = capture; task.eventName = eventName; if (isHandleEvent) { // save original delegate for compare to check duplicate task.originalDelegate = delegate; } if (!prepend) { existingTasks.push(task); } else { existingTasks.unshift(task); } if (returnTarget) { return target; } }; }; proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); if (nativePrependEventListener) { proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); } proto[REMOVE_EVENT_LISTENER] = function () { const target = this || _global; const eventName = arguments[0]; const options = arguments[2]; let capture; if (options === undefined) { capture = false; } else if (options === true) { capture = true; } else if (options === false) { capture = false; } else { capture = options ? !!options.capture : false; } const delegate = arguments[1]; if (!delegate) { return nativeRemoveEventListener.apply(this, arguments); } if (validateHandler && !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { return; } const symbolEventNames = zoneSymbolEventNames$1[eventName]; let symbolEventName; if (symbolEventNames) { symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; } const existingTasks = symbolEventName && target[symbolEventName]; if (existingTasks) { for (let i = 0; i < existingTasks.length; i++) { const existingTask = existingTasks[i]; if (compare(existingTask, delegate)) { existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check existingTask.isRemoved = true; if (existingTasks.length === 0) { // all tasks for the eventName + capture have gone, // remove globalZoneAwareCallback and remove the task cache from target existingTask.allRemoved = true; target[symbolEventName] = null; } existingTask.zone.cancelTask(existingTask); if (returnTarget) { return target; } return; } } } // issue 930, didn't find the event name or callback // from zone kept existingTasks, the callback maybe // added outside of zone, we need to call native removeEventListener // to try to remove it. return nativeRemoveEventListener.apply(this, arguments); }; proto[LISTENERS_EVENT_LISTENER] = function () { const target = this || _global; const eventName = arguments[0]; const listeners = []; const tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); for (let i = 0; i < tasks.length; i++) { const task = tasks[i]; let delegate = task.originalDelegate ? task.originalDelegate : task.callback; listeners.push(delegate); } return listeners; }; proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { const target = this || _global; const eventName = arguments[0]; if (!eventName) { const keys = Object.keys(target); for (let i = 0; i < keys.length; i++) { const prop = keys[i]; const match = EVENT_NAME_SYMBOL_REGX.exec(prop); let evtName = match && match[1]; // in nodejs EventEmitter, removeListener event is // used for monitoring the removeListener call, // so just keep removeListener eventListener until // all other eventListeners are removed if (evtName && evtName !== 'removeListener') { this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); } } // remove removeListener listener finally this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); } else { const symbolEventNames = zoneSymbolEventNames$1[eventName]; if (symbolEventNames) { const symbolEventName = symbolEventNames[FALSE_STR]; const symbolCaptureEventName = symbolEventNames[TRUE_STR]; const tasks = target[symbolEventName]; const captureTasks = target[symbolCaptureEventName]; if (tasks) { const removeTasks = tasks.slice(); for (let i = 0; i < removeTasks.length; i++) { const task = removeTasks[i]; let delegate = task.originalDelegate ? task.originalDelegate : task.callback; this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); } } if (captureTasks) { const removeTasks = captureTasks.slice(); for (let i = 0; i < removeTasks.length; i++) { const task = removeTasks[i]; let delegate = task.originalDelegate ? task.originalDelegate : task.callback; this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); } } } } if (returnTarget) { return this; } }; // for native toString patch attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); if (nativeRemoveAllListeners) { attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); } if (nativeListeners) { attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); } return true; } let results = []; for (let i = 0; i < apis.length; i++) { results[i] = patchEventTargetMethods(apis[i], patchOptions); } return results; } function findEventTasks(target, eventName) { const foundTasks = []; for (let prop in target) { const match = EVENT_NAME_SYMBOL_REGX.exec(prop); let evtName = match && match[1]; if (evtName && (!eventName || evtName === eventName)) { const tasks = target[prop]; if (tasks) { for (let i = 0; i < tasks.length; i++) { foundTasks.push(tasks[i]); } } } } return foundTasks; } function patchEventPrototype(global, api) { const Event = global['Event']; if (Event && Event.prototype) { api.patchMethod(Event.prototype, 'stopImmediatePropagation', (delegate) => function (self, args) { self[IMMEDIATE_PROPAGATION_SYMBOL] = true; // we need to call the native stopImmediatePropagation // in case in some hybrid application, some part of // application will be controlled by zone, some are not delegate && delegate.apply(self, args); }); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function patchCallbacks(api, target, targetName, method, callbacks) { const symbol = Zone.__symbol__(method); if (target[symbol]) { return; } const nativeDelegate = target[symbol] = target[method]; target[method] = function (name, opts, options) { if (opts && opts.prototype) { callbacks.forEach(function (callback) { const source = `${targetName}.${method}::` + callback; const prototype = opts.prototype; if (prototype.hasOwnProperty(callback)) { const descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); if (descriptor && descriptor.value) { descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); api._redefineProperty(opts.prototype, callback, descriptor); } else if (prototype[callback]) { prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); } } else if (prototype[callback]) { prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); } }); } return nativeDelegate.call(target, name, opts, options); }; api.attachOriginToPatched(target[method], nativeDelegate); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /* * This is necessary for Chrome and Chrome mobile, to enable * things like redefining `createdCallback` on an element. */ const zoneSymbol$1 = Zone.__symbol__; const _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty; const _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] = Object.getOwnPropertyDescriptor; const _create = Object.create; const unconfigurablesKey = zoneSymbol$1('unconfigurables'); function propertyPatch() { Object.defineProperty = function (obj, prop, desc) { if (isUnconfigurable(obj, prop)) { throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); } const originalConfigurableFlag = desc.configurable; if (prop !== 'prototype') { desc = rewriteDescriptor(obj, prop, desc); } return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); }; Object.defineProperties = function (obj, props) { Object.keys(props).forEach(function (prop) { Object.defineProperty(obj, prop, props[prop]); }); return obj; }; Object.create = function (obj, proto) { if (typeof proto === 'object' && !Object.isFrozen(proto)) { Object.keys(proto).forEach(function (prop) { proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); }); } return _create(obj, proto); }; Object.getOwnPropertyDescriptor = function (obj, prop) { const desc = _getOwnPropertyDescriptor(obj, prop); if (desc && isUnconfigurable(obj, prop)) { desc.configurable = false; } return desc; }; } function _redefineProperty(obj, prop, desc) { const originalConfigurableFlag = desc.configurable; desc = rewriteDescriptor(obj, prop, desc); return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); } function isUnconfigurable(obj, prop) { return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; } function rewriteDescriptor(obj, prop, desc) { // issue-927, if the desc is frozen, don't try to change the desc if (!Object.isFrozen(desc)) { desc.configurable = true; } if (!desc.configurable) { // issue-927, if the obj is frozen, don't try to set the desc to obj if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) { _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} }); } if (obj[unconfigurablesKey]) { obj[unconfigurablesKey][prop] = true; } } return desc; } function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { try { return _defineProperty(obj, prop, desc); } catch (error) { if (desc.configurable) { // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's // retry with the original flag value if (typeof originalConfigurableFlag == 'undefined') { delete desc.configurable; } else { desc.configurable = originalConfigurableFlag; } try { return _defineProperty(obj, prop, desc); } catch (error) { let descJson = null; try { descJson = JSON.stringify(desc); } catch (error) { descJson = desc.toString(); } console.log(`Attempting to configure '${prop}' with descriptor '${descJson}' on object '${obj}' and got error, giving up: ${error}`); } } else { throw error; } } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {globalThis} */ const globalEventHandlersEventNames = [ 'abort', 'animationcancel', 'animationend', 'animationiteration', 'auxclick', 'beforeinput', 'blur', 'cancel', 'canplay', 'canplaythrough', 'change', 'compositionstart', 'compositionupdate', 'compositionend', 'cuechange', 'click', 'close', 'contextmenu', 'curechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragexit', 'dragleave', 'dragover', 'drop', 'durationchange', 'emptied', 'ended', 'error', 'focus', 'focusin', 'focusout', 'gotpointercapture', 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'load', 'loadstart', 'loadeddata', 'loadedmetadata', 'lostpointercapture', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'mousewheel', 'orientationchange', 'pause', 'play', 'playing', 'pointercancel', 'pointerdown', 'pointerenter', 'pointerleave', 'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockerchange', 'pointerlockerror', 'mozpointerlockerror', 'webkitpointerlockerror', 'pointermove', 'pointout', 'pointerover', 'pointerup', 'progress', 'ratechange', 'reset', 'resize', 'scroll', 'seeked', 'seeking', 'select', 'selectionchange', 'selectstart', 'show', 'sort', 'stalled', 'submit', 'suspend', 'timeupdate', 'volumechange', 'touchcancel', 'touchmove', 'touchstart', 'touchend', 'transitioncancel', 'transitionend', 'waiting', 'wheel' ]; const documentEventNames = [ 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', 'visibilitychange', 'resume' ]; const windowEventNames = [ 'absolutedeviceorientation', 'afterinput', 'afterprint', 'appinstalled', 'beforeinstallprompt', 'beforeprint', 'beforeunload', 'devicelight', 'devicemotion', 'deviceorientation', 'deviceorientationabsolute', 'deviceproximity', 'hashchange', 'languagechange', 'message', 'mozbeforepaint', 'offline', 'online', 'paint', 'pageshow', 'pagehide', 'popstate', 'rejectionhandled', 'storage', 'unhandledrejection', 'unload', 'userproximity', 'vrdisplyconnected', 'vrdisplaydisconnected', 'vrdisplaypresentchange' ]; const htmlElementEventNames = [ 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend' ]; const mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; const ieElementEventNames = [ 'activate', 'afterupdate', 'ariarequest', 'beforeactivate', 'beforedeactivate', 'beforeeditfocus', 'beforeupdate', 'cellchange', 'controlselect', 'dataavailable', 'datasetchanged', 'datasetcomplete', 'errorupdate', 'filterchange', 'layoutcomplete', 'losecapture', 'move', 'moveend', 'movestart', 'propertychange', 'resizeend', 'resizestart', 'rowenter', 'rowexit', 'rowsdelete', 'rowsinserted', 'command', 'compassneedscalibration', 'deactivate', 'help', 'mscontentzoom', 'msmanipulationstatechanged', 'msgesturechange', 'msgesturedoubletap', 'msgestureend', 'msgesturehold', 'msgesturestart', 'msgesturetap', 'msgotpointercapture', 'msinertiastart', 'mslostpointercapture', 'mspointercancel', 'mspointerdown', 'mspointerenter', 'mspointerhover', 'mspointerleave', 'mspointermove', 'mspointerout', 'mspointerover', 'mspointerup', 'pointerout', 'mssitemodejumplistitemremoved', 'msthumbnailclick', 'stop', 'storagecommit' ]; const webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; const formEventNames = ['autocomplete', 'autocompleteerror']; const detailEventNames = ['toggle']; const frameEventNames = ['load']; const frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror']; const marqueeEventNames = ['bounce', 'finish', 'start']; const XMLHttpRequestEventNames = [ 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', 'readystatechange' ]; const IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; const websocketEventNames = ['close', 'error', 'open', 'message']; const workerEventNames = ['error', 'message']; const eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); function filterProperties(target, onProperties, ignoreProperties) { if (!ignoreProperties || ignoreProperties.length === 0) { return onProperties; } const tip = ignoreProperties.filter(ip => ip.target === target); if (!tip || tip.length === 0) { return onProperties; } const targetIgnoreProperties = tip[0].ignoreProperties; return onProperties.filter(op => targetIgnoreProperties.indexOf(op) === -1); } function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { // check whether target is available, sometimes target will be undefined // because different browser or some 3rd party plugin. if (!target) { return; } const filteredProperties = filterProperties(target, onProperties, ignoreProperties); patchOnProperties(target, filteredProperties, prototype); } function propertyDescriptorPatch(api, _global) { if (isNode && !isMix) { return; } if (Zone[api.symbol('patchEvents')]) { // events are already been patched by legacy patch. return; } const supportsWebSocket = typeof WebSocket !== 'undefined'; const ignoreProperties = _global['__Zone_ignore_on_properties']; // for browsers that we can patch the descriptor: Chrome & Firefox if (isBrowser) { const internalWindow = window; const ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : []; // in IE/Edge, onProp not exist in window object, but in WindowPrototype // so we need to pass WindowPrototype to check onProp exist or not patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow)); patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); if (typeof internalWindow['SVGElement'] !== 'undefined') { patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); } patchFilteredProperties(Element.prototype, eventNames, ignoreProperties); patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties); patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties); patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties); patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties); const HTMLMarqueeElement = internalWindow['HTMLMarqueeElement']; if (HTMLMarqueeElement) { patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties); } const Worker = internalWindow['Worker']; if (Worker) { patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties); } } const XMLHttpRequest = _global['XMLHttpRequest']; if (XMLHttpRequest) { // XMLHttpRequest is not available in ServiceWorker, so we need to check here patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); } const XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget) { patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); } if (typeof IDBIndex !== 'undefined') { patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties); } if (supportsWebSocket) { patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ Zone.__load_patch('util', (global, Zone, api) => { api.patchOnProperties = patchOnProperties; api.patchMethod = patchMethod; api.bindArguments = bindArguments; api.patchMacroTask = patchMacroTask; // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to // define which events will not be patched by `Zone.js`. // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep // the name consistent with angular repo. // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for // backwards compatibility. const SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); const SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); if (global[SYMBOL_UNPATCHED_EVENTS]) { global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; } if (global[SYMBOL_BLACK_LISTED_EVENTS]) { Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS]; } api.patchEventPrototype = patchEventPrototype; api.patchEventTarget = patchEventTarget; api.isIEOrEdge = isIEOrEdge; api.ObjectDefineProperty = ObjectDefineProperty; api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; api.ObjectCreate = ObjectCreate; api.ArraySlice = ArraySlice; api.patchClass = patchClass; api.wrapWithCurrentZone = wrapWithCurrentZone; api.filterProperties = filterProperties; api.attachOriginToPatched = attachOriginToPatched; api._redefineProperty = _redefineProperty; api.patchCallbacks = patchCallbacks; api.getGlobalObjects = () => ({ globalSources, zoneSymbolEventNames: zoneSymbolEventNames$1, eventNames, isBrowser, isMix, isNode, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX, ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR }); }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ const taskSymbol = zoneSymbol('zoneTask'); function patchTimer(window, setName, cancelName, nameSuffix) { let setNative = null; let clearNative = null; setName += nameSuffix; cancelName += nameSuffix; const tasksByHandleId = {}; function scheduleTask(task) { const data = task.data; function timer() { try { task.invoke.apply(this, arguments); } finally { // issue-934, task will be cancelled // even it is a periodic task such as // setInterval if (!(task.data && task.data.isPeriodic)) { if (typeof data.handleId === 'number') { // in non-nodejs env, we remove timerId // from local cache delete tasksByHandleId[data.handleId]; } else if (data.handleId) { // Node returns complex objects as handleIds // we remove task reference from timer object data.handleId[taskSymbol] = null; } } } } data.args[0] = timer; data.handleId = setNative.apply(window, data.args); return task; } function clearTask(task) { return clearNative(task.data.handleId); } setNative = patchMethod(window, setName, (delegate) => function (self, args) { if (typeof args[0] === 'function') { const options = { isPeriodic: nameSuffix === 'Interval', delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : undefined, args: args }; const task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask); if (!task) { return task; } // Node.js must additionally support the ref and unref functions. const handle = task.data.handleId; if (typeof handle === 'number') { // for non nodejs env, we save handleId: task // mapping in local cache for clearTimeout tasksByHandleId[handle] = task; } else if (handle) { // for nodejs env, we save task // reference in timerId Object for clearTimeout handle[taskSymbol] = task; } // check whether handle is null, because some polyfill or browser // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && typeof handle.unref === 'function') { task.ref = handle.ref.bind(handle); task.unref = handle.unref.bind(handle); } if (typeof handle === 'number' || handle) { return handle; } return task; } else { // cause an error by calling it directly. return delegate.apply(window, args); } }); clearNative = patchMethod(window, cancelName, (delegate) => function (self, args) { const id = args[0]; let task; if (typeof id === 'number') { // non nodejs env. task = tasksByHandleId[id]; } else { // nodejs env. task = id && id[taskSymbol]; // other environments. if (!task) { task = id; } } if (task && typeof task.type === 'string') { if (task.state !== 'notScheduled' && (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { if (typeof id === 'number') { delete tasksByHandleId[id]; } else if (id) { id[taskSymbol] = null; } // Do not cancel already canceled functions task.zone.cancelTask(task); } } else { // cause an error by calling it directly. delegate.apply(window, args); } }); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function patchCustomElements(_global, api) { const { isBrowser, isMix } = api.getGlobalObjects(); if ((!isBrowser && !isMix) || !_global['customElements'] || !('customElements' in _global)) { return; } const callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function eventTargetPatch(_global, api) { if (Zone[api.symbol('patchEventTarget')]) { // EventTarget is already patched. return; } const { eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX } = api.getGlobalObjects(); // predefine all __zone_symbol__ + eventName + true/false string for (let i = 0; i < eventNames.length; i++) { const eventName = eventNames[i]; const falseEventName = eventName + FALSE_STR; const trueEventName = eventName + TRUE_STR; const symbol = ZONE_SYMBOL_PREFIX + falseEventName; const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; zoneSymbolEventNames[eventName] = {}; zoneSymbolEventNames[eventName][FALSE_STR] = symbol; zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; } const EVENT_TARGET = _global['EventTarget']; if (!EVENT_TARGET || !EVENT_TARGET.prototype) { return; } api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); return true; } function patchEvent(global, api) { api.patchEventPrototype(global, api); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ Zone.__load_patch('legacy', (global) => { const legacyPatch = global[Zone.__symbol__('legacyPatch')]; if (legacyPatch) { legacyPatch(); } }); Zone.__load_patch('timers', (global) => { const set = 'set'; const clear = 'clear'; patchTimer(global, set, clear, 'Timeout'); patchTimer(global, set, clear, 'Interval'); patchTimer(global, set, clear, 'Immediate'); }); Zone.__load_patch('requestAnimationFrame', (global) => { patchTimer(global, 'request', 'cancel', 'AnimationFrame'); patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); }); Zone.__load_patch('blocking', (global, Zone) => { const blockingMethods = ['alert', 'prompt', 'confirm']; for (let i = 0; i < blockingMethods.length; i++) { const name = blockingMethods[i]; patchMethod(global, name, (delegate, symbol, name) => { return function (s, args) { return Zone.current.run(delegate, global, args, name); }; }); } }); Zone.__load_patch('EventTarget', (global, Zone, api) => { patchEvent(global, api); eventTargetPatch(global, api); // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener const XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); } patchClass('MutationObserver'); patchClass('WebKitMutationObserver'); patchClass('IntersectionObserver'); patchClass('FileReader'); }); Zone.__load_patch('on_property', (global, Zone, api) => { propertyDescriptorPatch(api, global); propertyPatch(); }); Zone.__load_patch('customElements', (global, Zone, api) => { patchCustomElements(global, api); }); Zone.__load_patch('XHR', (global, Zone) => { // Treat XMLHttpRequest as a macrotask. patchXHR(global); const XHR_TASK = zoneSymbol('xhrTask'); const XHR_SYNC = zoneSymbol('xhrSync'); const XHR_LISTENER = zoneSymbol('xhrListener'); const XHR_SCHEDULED = zoneSymbol('xhrScheduled'); const XHR_URL = zoneSymbol('xhrURL'); const XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); function patchXHR(window) { const XMLHttpRequest = window['XMLHttpRequest']; if (!XMLHttpRequest) { // XMLHttpRequest is not available in service worker return; } const XMLHttpRequestPrototype = XMLHttpRequest.prototype; function findPendingTask(target) { return target[XHR_TASK]; } let oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; let oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; if (!oriAddListener) { const XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget) { const XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; } } const READY_STATE_CHANGE = 'readystatechange'; const SCHEDULED = 'scheduled'; function scheduleTask(task) { const data = task.data; const target = data.target; target[XHR_SCHEDULED] = false; target[XHR_ERROR_BEFORE_SCHEDULED] = false; // remove existing event listener const listener = target[XHR_LISTENER]; if (!oriAddListener) { oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; } if (listener) { oriRemoveListener.call(target, READY_STATE_CHANGE, listener); } const newListener = target[XHR_LISTENER] = () => { if (target.readyState === target.DONE) { // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with // readyState=4 multiple times, so we need to check task state here if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { // check whether the xhr has registered onload listener // if that is the case, the task should invoke after all // onload listeners finish. const loadTasks = target['__zone_symbol__loadfalse']; if (loadTasks && loadTasks.length > 0) { const oriInvoke = task.invoke; task.invoke = function () { // need to load the tasks again, because in other // load listener, they may remove themselves const loadTasks = target['__zone_symbol__loadfalse']; for (let i = 0; i < loadTasks.length; i++) { if (loadTasks[i] === task) { loadTasks.splice(i, 1); } } if (!data.aborted && task.state === SCHEDULED) { oriInvoke.call(task); } }; loadTasks.push(task); } else { task.invoke(); } } else if (!data.aborted && target[XHR_SCHEDULED] === false) { // error occurs when xhr.send() target[XHR_ERROR_BEFORE_SCHEDULED] = true; } } }; oriAddListener.call(target, READY_STATE_CHANGE, newListener); const storedTask = target[XHR_TASK]; if (!storedTask) { target[XHR_TASK] = task; } sendNative.apply(target, data.args); target[XHR_SCHEDULED] = true; return task; } function placeholderCallback() { } function clearTask(task) { const data = task.data; // Note - ideally, we would call data.target.removeEventListener here, but it's too late // to prevent it from firing. So instead, we store info for the event listener. data.aborted = true; return abortNative.apply(data.target, data.args); } const openNative = patchMethod(XMLHttpRequestPrototype, 'open', () => function (self, args) { self[XHR_SYNC] = args[2] == false; self[XHR_URL] = args[1]; return openNative.apply(self, args); }); const XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; const fetchTaskAborting = zoneSymbol('fetchTaskAborting'); const fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); const sendNative = patchMethod(XMLHttpRequestPrototype, 'send', () => function (self, args) { if (Zone.current[fetchTaskScheduling] === true) { // a fetch is scheduling, so we are using xhr to polyfill fetch // and because we already schedule macroTask for fetch, we should // not schedule a macroTask for xhr again return sendNative.apply(self, args); } if (self[XHR_SYNC]) { // if the XHR is sync there is no task to schedule, just execute the code. return sendNative.apply(self, args); } else { const options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false }; const task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask); if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted && task.state === SCHEDULED) { // xhr request throw error when send // we should invoke task instead of leaving a scheduled // pending macroTask task.invoke(); } } }); const abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', () => function (self, args) { const task = findPendingTask(self); if (task && typeof task.type == 'string') { // If the XHR has already completed, do nothing. // If the XHR has already been aborted, do nothing. // Fix #569, call abort multiple times before done will cause // macroTask task count be negative number if (task.cancelFn == null || (task.data && task.data.aborted)) { return; } task.zone.cancelTask(task); } else if (Zone.current[fetchTaskAborting] === true) { // the abort is called from fetch polyfill, we need to call native abort of XHR. return abortNative.apply(self, args); } // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no // task // to cancel. Do nothing. }); } }); Zone.__load_patch('geolocation', (global) => { /// GEO_LOCATION if (global['navigator'] && global['navigator'].geolocation) { patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); } }); Zone.__load_patch('PromiseRejectionEvent', (global, Zone) => { // handle unhandled promise rejection function findPromiseRejectionHandler(evtName) { return function (e) { const eventTasks = findEventTasks(global, evtName); eventTasks.forEach(eventTask => { // windows has added unhandledrejection event listener // trigger the event listener const PromiseRejectionEvent = global['PromiseRejectionEvent']; if (PromiseRejectionEvent) { const evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection }); eventTask.invoke(evt); } }); }; } if (global['PromiseRejectionEvent']) { Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = findPromiseRejectionHandler('unhandledrejection'); Zone[zoneSymbol('rejectionHandledHandler')] = findPromiseRejectionHandler('rejectionhandled'); } }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /***/ }), /***/ "./src/polyfills.ts": /*!**************************!*\ !*** ./src/polyfills.ts ***! \**************************/ /*! no exports provided */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zone.js/dist/zone */ "./node_modules/zone.js/dist/zone-evergreen.js"); /* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__); /** * 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. */ // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS */ /***/ }), /***/ 2: /*!***************************************************************************************************************************!*\ !*** multi ./src/polyfills.ts ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! \***************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(/*! /Users/alex/Desktop/obscurify3/src/polyfills.ts */"./src/polyfills.ts"); module.exports = __webpack_require__(/*! /Users/alex/Desktop/obscurify3/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); /***/ }) },[[2,"runtime"]]]); ================================================ FILE: frontend/dist/obscurify3/polyfills-es5.js ================================================ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["polyfills-es5"], { /***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js": /*!******************************************************************************************************!*\ !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js ***! \******************************************************************************************************/ /*! no exports provided */ /***/ function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsEs5JitPolyfillsJs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! core-js/es/reflect */ "./node_modules/core-js/es/reflect/index.js"); /* harmony import */ var core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(core_js_es_reflect__WEBPACK_IMPORTED_MODULE_0__); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /***/ }, /***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js": /*!**************************************************************************************************!*\ !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js ***! \**************************************************************************************************/ /*! no exports provided */ /***/ function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsEs5PolyfillsJs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! core-js/es/symbol */ "./node_modules/core-js/es/symbol/index.js"); /* harmony import */ var core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(core_js_es_symbol__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! core-js/modules/es.function.bind */ "./node_modules/core-js/modules/es.function.bind.js"); /* harmony import */ var core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_function_bind__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! core-js/modules/es.function.name */ "./node_modules/core-js/modules/es.function.name.js"); /* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! core-js/modules/es.function.has-instance */ "./node_modules/core-js/modules/es.function.has-instance.js"); /* harmony import */ var core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_function_has_instance__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! core-js/modules/es.object.create */ "./node_modules/core-js/modules/es.object.create.js"); /* harmony import */ var core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_create__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! core-js/modules/es.object.define-property */ "./node_modules/core-js/modules/es.object.define-property.js"); /* harmony import */ var core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_define_property__WEBPACK_IMPORTED_MODULE_5__); /* harmony import */ var core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! core-js/modules/es.object.define-properties */ "./node_modules/core-js/modules/es.object.define-properties.js"); /* harmony import */ var core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_define_properties__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( /*! core-js/modules/es.object.get-own-property-descriptor */ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js"); /* harmony import */ var core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__); /* harmony import */ var core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( /*! core-js/modules/es.object.get-prototype-of */ "./node_modules/core-js/modules/es.object.get-prototype-of.js"); /* harmony import */ var core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_get_prototype_of__WEBPACK_IMPORTED_MODULE_8__); /* harmony import */ var core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( /*! core-js/modules/es.object.keys */ "./node_modules/core-js/modules/es.object.keys.js"); /* harmony import */ var core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_keys__WEBPACK_IMPORTED_MODULE_9__); /* harmony import */ var core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( /*! core-js/modules/es.object.get-own-property-names */ "./node_modules/core-js/modules/es.object.get-own-property-names.js"); /* harmony import */ var core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_get_own_property_names__WEBPACK_IMPORTED_MODULE_10__); /* harmony import */ var core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__( /*! core-js/modules/es.object.freeze */ "./node_modules/core-js/modules/es.object.freeze.js"); /* harmony import */ var core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_freeze__WEBPACK_IMPORTED_MODULE_11__); /* harmony import */ var core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__( /*! core-js/modules/es.object.seal */ "./node_modules/core-js/modules/es.object.seal.js"); /* harmony import */ var core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_seal__WEBPACK_IMPORTED_MODULE_12__); /* harmony import */ var core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__( /*! core-js/modules/es.object.prevent-extensions */ "./node_modules/core-js/modules/es.object.prevent-extensions.js"); /* harmony import */ var core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_prevent_extensions__WEBPACK_IMPORTED_MODULE_13__); /* harmony import */ var core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__( /*! core-js/modules/es.object.is-frozen */ "./node_modules/core-js/modules/es.object.is-frozen.js"); /* harmony import */ var core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_is_frozen__WEBPACK_IMPORTED_MODULE_14__); /* harmony import */ var core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__( /*! core-js/modules/es.object.is-sealed */ "./node_modules/core-js/modules/es.object.is-sealed.js"); /* harmony import */ var core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_is_sealed__WEBPACK_IMPORTED_MODULE_15__); /* harmony import */ var core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__( /*! core-js/modules/es.object.is-extensible */ "./node_modules/core-js/modules/es.object.is-extensible.js"); /* harmony import */ var core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_is_extensible__WEBPACK_IMPORTED_MODULE_16__); /* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__( /*! core-js/modules/es.object.assign */ "./node_modules/core-js/modules/es.object.assign.js"); /* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_17__); /* harmony import */ var core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__( /*! core-js/modules/es.object.is */ "./node_modules/core-js/modules/es.object.is.js"); /* harmony import */ var core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_is__WEBPACK_IMPORTED_MODULE_18__); /* harmony import */ var core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__( /*! core-js/modules/es.object.set-prototype-of */ "./node_modules/core-js/modules/es.object.set-prototype-of.js"); /* harmony import */ var core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_19__); /* harmony import */ var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__( /*! core-js/modules/es.object.to-string */ "./node_modules/core-js/modules/es.object.to-string.js"); /* harmony import */ var core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_object_to_string__WEBPACK_IMPORTED_MODULE_20__); /* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__( /*! core-js/modules/es.array.concat */ "./node_modules/core-js/modules/es.array.concat.js"); /* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_21__); /* harmony import */ var core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__( /*! core-js/modules/es.array.is-array */ "./node_modules/core-js/modules/es.array.is-array.js"); /* harmony import */ var core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_is_array__WEBPACK_IMPORTED_MODULE_22__); /* harmony import */ var core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__( /*! core-js/modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js"); /* harmony import */ var core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_from__WEBPACK_IMPORTED_MODULE_23__); /* harmony import */ var core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__( /*! core-js/modules/es.array.of */ "./node_modules/core-js/modules/es.array.of.js"); /* harmony import */ var core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_of__WEBPACK_IMPORTED_MODULE_24__); /* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__( /*! core-js/modules/es.array.join */ "./node_modules/core-js/modules/es.array.join.js"); /* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_25__); /* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__( /*! core-js/modules/es.array.slice */ "./node_modules/core-js/modules/es.array.slice.js"); /* harmony import */ var core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_slice__WEBPACK_IMPORTED_MODULE_26__); /* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__( /*! core-js/modules/es.array.splice */ "./node_modules/core-js/modules/es.array.splice.js"); /* harmony import */ var core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_splice__WEBPACK_IMPORTED_MODULE_27__); /* harmony import */ var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__( /*! core-js/modules/es.array.sort */ "./node_modules/core-js/modules/es.array.sort.js"); /* harmony import */ var core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_sort__WEBPACK_IMPORTED_MODULE_28__); /* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__( /*! core-js/modules/es.array.for-each */ "./node_modules/core-js/modules/es.array.for-each.js"); /* harmony import */ var core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_for_each__WEBPACK_IMPORTED_MODULE_29__); /* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__( /*! core-js/modules/es.array.map */ "./node_modules/core-js/modules/es.array.map.js"); /* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_30__); /* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__( /*! core-js/modules/es.array.filter */ "./node_modules/core-js/modules/es.array.filter.js"); /* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_31__); /* harmony import */ var core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__( /*! core-js/modules/es.array.some */ "./node_modules/core-js/modules/es.array.some.js"); /* harmony import */ var core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_some__WEBPACK_IMPORTED_MODULE_32__); /* harmony import */ var core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__( /*! core-js/modules/es.array.every */ "./node_modules/core-js/modules/es.array.every.js"); /* harmony import */ var core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_every__WEBPACK_IMPORTED_MODULE_33__); /* harmony import */ var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__( /*! core-js/modules/es.array.reduce */ "./node_modules/core-js/modules/es.array.reduce.js"); /* harmony import */ var core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_reduce__WEBPACK_IMPORTED_MODULE_34__); /* harmony import */ var core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__( /*! core-js/modules/es.array.reduce-right */ "./node_modules/core-js/modules/es.array.reduce-right.js"); /* harmony import */ var core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_reduce_right__WEBPACK_IMPORTED_MODULE_35__); /* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__( /*! core-js/modules/es.array.index-of */ "./node_modules/core-js/modules/es.array.index-of.js"); /* harmony import */ var core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_index_of__WEBPACK_IMPORTED_MODULE_36__); /* harmony import */ var core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__( /*! core-js/modules/es.array.last-index-of */ "./node_modules/core-js/modules/es.array.last-index-of.js"); /* harmony import */ var core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_last_index_of__WEBPACK_IMPORTED_MODULE_37__); /* harmony import */ var core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__( /*! core-js/modules/es.array.copy-within */ "./node_modules/core-js/modules/es.array.copy-within.js"); /* harmony import */ var core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_copy_within__WEBPACK_IMPORTED_MODULE_38__); /* harmony import */ var core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__( /*! core-js/modules/es.array.fill */ "./node_modules/core-js/modules/es.array.fill.js"); /* harmony import */ var core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_fill__WEBPACK_IMPORTED_MODULE_39__); /* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__( /*! core-js/modules/es.array.find */ "./node_modules/core-js/modules/es.array.find.js"); /* harmony import */ var core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_find__WEBPACK_IMPORTED_MODULE_40__); /* harmony import */ var core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__( /*! core-js/modules/es.array.find-index */ "./node_modules/core-js/modules/es.array.find-index.js"); /* harmony import */ var core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_find_index__WEBPACK_IMPORTED_MODULE_41__); /* harmony import */ var core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__( /*! core-js/modules/es.array.iterator */ "./node_modules/core-js/modules/es.array.iterator.js"); /* harmony import */ var core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_array_iterator__WEBPACK_IMPORTED_MODULE_42__); /* harmony import */ var core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__( /*! core-js/modules/es.string.from-code-point */ "./node_modules/core-js/modules/es.string.from-code-point.js"); /* harmony import */ var core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_from_code_point__WEBPACK_IMPORTED_MODULE_43__); /* harmony import */ var core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__( /*! core-js/modules/es.string.raw */ "./node_modules/core-js/modules/es.string.raw.js"); /* harmony import */ var core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_raw__WEBPACK_IMPORTED_MODULE_44__); /* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__( /*! core-js/modules/es.string.trim */ "./node_modules/core-js/modules/es.string.trim.js"); /* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_45__); /* harmony import */ var core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__( /*! core-js/modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js"); /* harmony import */ var core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_iterator__WEBPACK_IMPORTED_MODULE_46__); /* harmony import */ var core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__( /*! core-js/modules/es.string.code-point-at */ "./node_modules/core-js/modules/es.string.code-point-at.js"); /* harmony import */ var core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_code_point_at__WEBPACK_IMPORTED_MODULE_47__); /* harmony import */ var core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__( /*! core-js/modules/es.string.ends-with */ "./node_modules/core-js/modules/es.string.ends-with.js"); /* harmony import */ var core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_ends_with__WEBPACK_IMPORTED_MODULE_48__); /* harmony import */ var core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__( /*! core-js/modules/es.string.includes */ "./node_modules/core-js/modules/es.string.includes.js"); /* harmony import */ var core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_includes__WEBPACK_IMPORTED_MODULE_49__); /* harmony import */ var core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__( /*! core-js/modules/es.string.repeat */ "./node_modules/core-js/modules/es.string.repeat.js"); /* harmony import */ var core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_repeat__WEBPACK_IMPORTED_MODULE_50__); /* harmony import */ var core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__( /*! core-js/modules/es.string.starts-with */ "./node_modules/core-js/modules/es.string.starts-with.js"); /* harmony import */ var core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_starts_with__WEBPACK_IMPORTED_MODULE_51__); /* harmony import */ var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__( /*! core-js/modules/es.string.anchor */ "./node_modules/core-js/modules/es.string.anchor.js"); /* harmony import */ var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_52__); /* harmony import */ var core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__( /*! core-js/modules/es.string.big */ "./node_modules/core-js/modules/es.string.big.js"); /* harmony import */ var core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_big__WEBPACK_IMPORTED_MODULE_53__); /* harmony import */ var core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__( /*! core-js/modules/es.string.blink */ "./node_modules/core-js/modules/es.string.blink.js"); /* harmony import */ var core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_blink__WEBPACK_IMPORTED_MODULE_54__); /* harmony import */ var core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__( /*! core-js/modules/es.string.bold */ "./node_modules/core-js/modules/es.string.bold.js"); /* harmony import */ var core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_bold__WEBPACK_IMPORTED_MODULE_55__); /* harmony import */ var core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__( /*! core-js/modules/es.string.fixed */ "./node_modules/core-js/modules/es.string.fixed.js"); /* harmony import */ var core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_fixed__WEBPACK_IMPORTED_MODULE_56__); /* harmony import */ var core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__( /*! core-js/modules/es.string.fontcolor */ "./node_modules/core-js/modules/es.string.fontcolor.js"); /* harmony import */ var core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_fontcolor__WEBPACK_IMPORTED_MODULE_57__); /* harmony import */ var core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__( /*! core-js/modules/es.string.fontsize */ "./node_modules/core-js/modules/es.string.fontsize.js"); /* harmony import */ var core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_fontsize__WEBPACK_IMPORTED_MODULE_58__); /* harmony import */ var core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__( /*! core-js/modules/es.string.italics */ "./node_modules/core-js/modules/es.string.italics.js"); /* harmony import */ var core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_italics__WEBPACK_IMPORTED_MODULE_59__); /* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__( /*! core-js/modules/es.string.link */ "./node_modules/core-js/modules/es.string.link.js"); /* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_60__); /* harmony import */ var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__( /*! core-js/modules/es.string.small */ "./node_modules/core-js/modules/es.string.small.js"); /* harmony import */ var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_61__); /* harmony import */ var core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__( /*! core-js/modules/es.string.strike */ "./node_modules/core-js/modules/es.string.strike.js"); /* harmony import */ var core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_strike__WEBPACK_IMPORTED_MODULE_62__); /* harmony import */ var core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__( /*! core-js/modules/es.string.sub */ "./node_modules/core-js/modules/es.string.sub.js"); /* harmony import */ var core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_sub__WEBPACK_IMPORTED_MODULE_63__); /* harmony import */ var core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__( /*! core-js/modules/es.string.sup */ "./node_modules/core-js/modules/es.string.sup.js"); /* harmony import */ var core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_sup__WEBPACK_IMPORTED_MODULE_64__); /* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__( /*! core-js/modules/es.string.match */ "./node_modules/core-js/modules/es.string.match.js"); /* harmony import */ var core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_match__WEBPACK_IMPORTED_MODULE_65__); /* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__( /*! core-js/modules/es.string.replace */ "./node_modules/core-js/modules/es.string.replace.js"); /* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_66__); /* harmony import */ var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__( /*! core-js/modules/es.string.search */ "./node_modules/core-js/modules/es.string.search.js"); /* harmony import */ var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_67__); /* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__( /*! core-js/modules/es.string.split */ "./node_modules/core-js/modules/es.string.split.js"); /* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_68__); /* harmony import */ var core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__( /*! core-js/modules/es.parse-int */ "./node_modules/core-js/modules/es.parse-int.js"); /* harmony import */ var core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_parse_int__WEBPACK_IMPORTED_MODULE_69__); /* harmony import */ var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__( /*! core-js/modules/es.parse-float */ "./node_modules/core-js/modules/es.parse-float.js"); /* harmony import */ var core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_parse_float__WEBPACK_IMPORTED_MODULE_70__); /* harmony import */ var core_js_es_number__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__( /*! core-js/es/number */ "./node_modules/core-js/es/number/index.js"); /* harmony import */ var core_js_es_number__WEBPACK_IMPORTED_MODULE_71___default = /*#__PURE__*/ __webpack_require__.n(core_js_es_number__WEBPACK_IMPORTED_MODULE_71__); /* harmony import */ var core_js_es_math__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__( /*! core-js/es/math */ "./node_modules/core-js/es/math/index.js"); /* harmony import */ var core_js_es_math__WEBPACK_IMPORTED_MODULE_72___default = /*#__PURE__*/ __webpack_require__.n(core_js_es_math__WEBPACK_IMPORTED_MODULE_72__); /* harmony import */ var core_js_es_date__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__( /*! core-js/es/date */ "./node_modules/core-js/es/date/index.js"); /* harmony import */ var core_js_es_date__WEBPACK_IMPORTED_MODULE_73___default = /*#__PURE__*/ __webpack_require__.n(core_js_es_date__WEBPACK_IMPORTED_MODULE_73__); /* harmony import */ var core_js_es_regexp__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__( /*! core-js/es/regexp */ "./node_modules/core-js/es/regexp/index.js"); /* harmony import */ var core_js_es_regexp__WEBPACK_IMPORTED_MODULE_74___default = /*#__PURE__*/ __webpack_require__.n(core_js_es_regexp__WEBPACK_IMPORTED_MODULE_74__); /* harmony import */ var core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__( /*! core-js/modules/es.map */ "./node_modules/core-js/modules/es.map.js"); /* harmony import */ var core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_75___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_map__WEBPACK_IMPORTED_MODULE_75__); /* harmony import */ var core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__( /*! core-js/modules/es.weak-map */ "./node_modules/core-js/modules/es.weak-map.js"); /* harmony import */ var core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_76___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_weak_map__WEBPACK_IMPORTED_MODULE_76__); /* harmony import */ var core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__( /*! core-js/modules/es.set */ "./node_modules/core-js/modules/es.set.js"); /* harmony import */ var core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_77___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_set__WEBPACK_IMPORTED_MODULE_77__); /* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__( /*! core-js/modules/web.dom-collections.for-each */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); /* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_78___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_78__); /* harmony import */ var core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__( /*! core-js/modules/web.dom-collections.iterator */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); /* harmony import */ var core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_79___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_web_dom_collections_iterator__WEBPACK_IMPORTED_MODULE_79__); /* harmony import */ var core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__( /*! core-js/modules/es.promise */ "./node_modules/core-js/modules/es.promise.js"); /* harmony import */ var core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_80___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_promise__WEBPACK_IMPORTED_MODULE_80__); /* harmony import */ var core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__( /*! core-js/modules/es.json.to-string-tag */ "./node_modules/core-js/modules/es.json.to-string-tag.js"); /* harmony import */ var core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_81___default = /*#__PURE__*/ __webpack_require__.n(core_js_modules_es_json_to_string_tag__WEBPACK_IMPORTED_MODULE_81__); /* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__( /*! regenerator-runtime/runtime */ "./node_modules/regenerator-runtime/runtime.js"); /* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_82___default = /*#__PURE__*/ __webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_82__); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // ES2015 symbol capabilities // ES2015 function capabilities // ES2015 object capabilities // ES2015 array capabilities // ES2015 string capabilities /***/ }, /***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js": /*!**************************************************************************************************!*\ !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ***! \**************************************************************************************************/ /*! no exports provided */ /***/ function node_modulesAngularDevkitBuildAngularSrcAngularCliFilesModelsJitPolyfillsJs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! core-js/proposals/reflect-metadata */ "./node_modules/core-js/proposals/reflect-metadata.js"); /* harmony import */ var core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(core_js_proposals_reflect_metadata__WEBPACK_IMPORTED_MODULE_0__); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /***/ }, /***/ "./node_modules/core-js/es/date/index.js": /*!***********************************************!*\ !*** ./node_modules/core-js/es/date/index.js ***! \***********************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsEsDateIndexJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../../modules/es.date.now */ "./node_modules/core-js/modules/es.date.now.js"); __webpack_require__( /*! ../../modules/es.date.to-json */ "./node_modules/core-js/modules/es.date.to-json.js"); __webpack_require__( /*! ../../modules/es.date.to-iso-string */ "./node_modules/core-js/modules/es.date.to-iso-string.js"); __webpack_require__( /*! ../../modules/es.date.to-string */ "./node_modules/core-js/modules/es.date.to-string.js"); __webpack_require__( /*! ../../modules/es.date.to-primitive */ "./node_modules/core-js/modules/es.date.to-primitive.js"); var path = __webpack_require__( /*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); module.exports = path.Date; /***/ }, /***/ "./node_modules/core-js/es/math/index.js": /*!***********************************************!*\ !*** ./node_modules/core-js/es/math/index.js ***! \***********************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsEsMathIndexJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../../modules/es.math.acosh */ "./node_modules/core-js/modules/es.math.acosh.js"); __webpack_require__( /*! ../../modules/es.math.asinh */ "./node_modules/core-js/modules/es.math.asinh.js"); __webpack_require__( /*! ../../modules/es.math.atanh */ "./node_modules/core-js/modules/es.math.atanh.js"); __webpack_require__( /*! ../../modules/es.math.cbrt */ "./node_modules/core-js/modules/es.math.cbrt.js"); __webpack_require__( /*! ../../modules/es.math.clz32 */ "./node_modules/core-js/modules/es.math.clz32.js"); __webpack_require__( /*! ../../modules/es.math.cosh */ "./node_modules/core-js/modules/es.math.cosh.js"); __webpack_require__( /*! ../../modules/es.math.expm1 */ "./node_modules/core-js/modules/es.math.expm1.js"); __webpack_require__( /*! ../../modules/es.math.fround */ "./node_modules/core-js/modules/es.math.fround.js"); __webpack_require__( /*! ../../modules/es.math.hypot */ "./node_modules/core-js/modules/es.math.hypot.js"); __webpack_require__( /*! ../../modules/es.math.imul */ "./node_modules/core-js/modules/es.math.imul.js"); __webpack_require__( /*! ../../modules/es.math.log10 */ "./node_modules/core-js/modules/es.math.log10.js"); __webpack_require__( /*! ../../modules/es.math.log1p */ "./node_modules/core-js/modules/es.math.log1p.js"); __webpack_require__( /*! ../../modules/es.math.log2 */ "./node_modules/core-js/modules/es.math.log2.js"); __webpack_require__( /*! ../../modules/es.math.sign */ "./node_modules/core-js/modules/es.math.sign.js"); __webpack_require__( /*! ../../modules/es.math.sinh */ "./node_modules/core-js/modules/es.math.sinh.js"); __webpack_require__( /*! ../../modules/es.math.tanh */ "./node_modules/core-js/modules/es.math.tanh.js"); __webpack_require__( /*! ../../modules/es.math.to-string-tag */ "./node_modules/core-js/modules/es.math.to-string-tag.js"); __webpack_require__( /*! ../../modules/es.math.trunc */ "./node_modules/core-js/modules/es.math.trunc.js"); var path = __webpack_require__( /*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); module.exports = path.Math; /***/ }, /***/ "./node_modules/core-js/es/number/index.js": /*!*************************************************!*\ !*** ./node_modules/core-js/es/number/index.js ***! \*************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsEsNumberIndexJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../../modules/es.number.constructor */ "./node_modules/core-js/modules/es.number.constructor.js"); __webpack_require__( /*! ../../modules/es.number.epsilon */ "./node_modules/core-js/modules/es.number.epsilon.js"); __webpack_require__( /*! ../../modules/es.number.is-finite */ "./node_modules/core-js/modules/es.number.is-finite.js"); __webpack_require__( /*! ../../modules/es.number.is-integer */ "./node_modules/core-js/modules/es.number.is-integer.js"); __webpack_require__( /*! ../../modules/es.number.is-nan */ "./node_modules/core-js/modules/es.number.is-nan.js"); __webpack_require__( /*! ../../modules/es.number.is-safe-integer */ "./node_modules/core-js/modules/es.number.is-safe-integer.js"); __webpack_require__( /*! ../../modules/es.number.max-safe-integer */ "./node_modules/core-js/modules/es.number.max-safe-integer.js"); __webpack_require__( /*! ../../modules/es.number.min-safe-integer */ "./node_modules/core-js/modules/es.number.min-safe-integer.js"); __webpack_require__( /*! ../../modules/es.number.parse-float */ "./node_modules/core-js/modules/es.number.parse-float.js"); __webpack_require__( /*! ../../modules/es.number.parse-int */ "./node_modules/core-js/modules/es.number.parse-int.js"); __webpack_require__( /*! ../../modules/es.number.to-fixed */ "./node_modules/core-js/modules/es.number.to-fixed.js"); __webpack_require__( /*! ../../modules/es.number.to-precision */ "./node_modules/core-js/modules/es.number.to-precision.js"); var path = __webpack_require__( /*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); module.exports = path.Number; /***/ }, /***/ "./node_modules/core-js/es/reflect/index.js": /*!**************************************************!*\ !*** ./node_modules/core-js/es/reflect/index.js ***! \**************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsEsReflectIndexJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../../modules/es.reflect.apply */ "./node_modules/core-js/modules/es.reflect.apply.js"); __webpack_require__( /*! ../../modules/es.reflect.construct */ "./node_modules/core-js/modules/es.reflect.construct.js"); __webpack_require__( /*! ../../modules/es.reflect.define-property */ "./node_modules/core-js/modules/es.reflect.define-property.js"); __webpack_require__( /*! ../../modules/es.reflect.delete-property */ "./node_modules/core-js/modules/es.reflect.delete-property.js"); __webpack_require__( /*! ../../modules/es.reflect.get */ "./node_modules/core-js/modules/es.reflect.get.js"); __webpack_require__( /*! ../../modules/es.reflect.get-own-property-descriptor */ "./node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js"); __webpack_require__( /*! ../../modules/es.reflect.get-prototype-of */ "./node_modules/core-js/modules/es.reflect.get-prototype-of.js"); __webpack_require__( /*! ../../modules/es.reflect.has */ "./node_modules/core-js/modules/es.reflect.has.js"); __webpack_require__( /*! ../../modules/es.reflect.is-extensible */ "./node_modules/core-js/modules/es.reflect.is-extensible.js"); __webpack_require__( /*! ../../modules/es.reflect.own-keys */ "./node_modules/core-js/modules/es.reflect.own-keys.js"); __webpack_require__( /*! ../../modules/es.reflect.prevent-extensions */ "./node_modules/core-js/modules/es.reflect.prevent-extensions.js"); __webpack_require__( /*! ../../modules/es.reflect.set */ "./node_modules/core-js/modules/es.reflect.set.js"); __webpack_require__( /*! ../../modules/es.reflect.set-prototype-of */ "./node_modules/core-js/modules/es.reflect.set-prototype-of.js"); var path = __webpack_require__( /*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); module.exports = path.Reflect; /***/ }, /***/ "./node_modules/core-js/es/regexp/index.js": /*!*************************************************!*\ !*** ./node_modules/core-js/es/regexp/index.js ***! \*************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsEsRegexpIndexJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../../modules/es.regexp.constructor */ "./node_modules/core-js/modules/es.regexp.constructor.js"); __webpack_require__( /*! ../../modules/es.regexp.to-string */ "./node_modules/core-js/modules/es.regexp.to-string.js"); __webpack_require__( /*! ../../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js"); __webpack_require__( /*! ../../modules/es.regexp.flags */ "./node_modules/core-js/modules/es.regexp.flags.js"); __webpack_require__( /*! ../../modules/es.string.match */ "./node_modules/core-js/modules/es.string.match.js"); __webpack_require__( /*! ../../modules/es.string.replace */ "./node_modules/core-js/modules/es.string.replace.js"); __webpack_require__( /*! ../../modules/es.string.search */ "./node_modules/core-js/modules/es.string.search.js"); __webpack_require__( /*! ../../modules/es.string.split */ "./node_modules/core-js/modules/es.string.split.js"); /***/ }, /***/ "./node_modules/core-js/es/symbol/index.js": /*!*************************************************!*\ !*** ./node_modules/core-js/es/symbol/index.js ***! \*************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsEsSymbolIndexJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../../modules/es.array.concat */ "./node_modules/core-js/modules/es.array.concat.js"); __webpack_require__( /*! ../../modules/es.object.to-string */ "./node_modules/core-js/modules/es.object.to-string.js"); __webpack_require__( /*! ../../modules/es.symbol */ "./node_modules/core-js/modules/es.symbol.js"); __webpack_require__( /*! ../../modules/es.symbol.async-iterator */ "./node_modules/core-js/modules/es.symbol.async-iterator.js"); __webpack_require__( /*! ../../modules/es.symbol.description */ "./node_modules/core-js/modules/es.symbol.description.js"); __webpack_require__( /*! ../../modules/es.symbol.has-instance */ "./node_modules/core-js/modules/es.symbol.has-instance.js"); __webpack_require__( /*! ../../modules/es.symbol.is-concat-spreadable */ "./node_modules/core-js/modules/es.symbol.is-concat-spreadable.js"); __webpack_require__( /*! ../../modules/es.symbol.iterator */ "./node_modules/core-js/modules/es.symbol.iterator.js"); __webpack_require__( /*! ../../modules/es.symbol.match */ "./node_modules/core-js/modules/es.symbol.match.js"); __webpack_require__( /*! ../../modules/es.symbol.match-all */ "./node_modules/core-js/modules/es.symbol.match-all.js"); __webpack_require__( /*! ../../modules/es.symbol.replace */ "./node_modules/core-js/modules/es.symbol.replace.js"); __webpack_require__( /*! ../../modules/es.symbol.search */ "./node_modules/core-js/modules/es.symbol.search.js"); __webpack_require__( /*! ../../modules/es.symbol.species */ "./node_modules/core-js/modules/es.symbol.species.js"); __webpack_require__( /*! ../../modules/es.symbol.split */ "./node_modules/core-js/modules/es.symbol.split.js"); __webpack_require__( /*! ../../modules/es.symbol.to-primitive */ "./node_modules/core-js/modules/es.symbol.to-primitive.js"); __webpack_require__( /*! ../../modules/es.symbol.to-string-tag */ "./node_modules/core-js/modules/es.symbol.to-string-tag.js"); __webpack_require__( /*! ../../modules/es.symbol.unscopables */ "./node_modules/core-js/modules/es.symbol.unscopables.js"); __webpack_require__( /*! ../../modules/es.math.to-string-tag */ "./node_modules/core-js/modules/es.math.to-string-tag.js"); __webpack_require__( /*! ../../modules/es.json.to-string-tag */ "./node_modules/core-js/modules/es.json.to-string-tag.js"); var path = __webpack_require__( /*! ../../internals/path */ "./node_modules/core-js/internals/path.js"); module.exports = path.Symbol; /***/ }, /***/ "./node_modules/core-js/internals/a-function.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/a-function.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsAFunctionJs(module, exports) { module.exports = function (it) { if (typeof it != 'function') { throw TypeError(String(it) + ' is not a function'); } return it; }; /***/ }, /***/ "./node_modules/core-js/internals/a-possible-prototype.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/a-possible-prototype.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsAPossiblePrototypeJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); module.exports = function (it) { if (!isObject(it) && it !== null) { throw TypeError("Can't set " + String(it) + ' as a prototype'); } return it; }; /***/ }, /***/ "./node_modules/core-js/internals/add-to-unscopables.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/internals/add-to-unscopables.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsAddToUnscopablesJs(module, exports, __webpack_require__) { var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var create = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var UNSCOPABLES = wellKnownSymbol('unscopables'); var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables if (ArrayPrototype[UNSCOPABLES] == undefined) { hide(ArrayPrototype, UNSCOPABLES, create(null)); } // add a key to Array.prototype[@@unscopables] module.exports = function (key) { ArrayPrototype[UNSCOPABLES][key] = true; }; /***/ }, /***/ "./node_modules/core-js/internals/advance-string-index.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/advance-string-index.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsAdvanceStringIndexJs(module, exports, __webpack_require__) { "use strict"; var charAt = __webpack_require__( /*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt; // `AdvanceStringIndex` abstract operation // https://tc39.github.io/ecma262/#sec-advancestringindex module.exports = function (S, index, unicode) { return index + (unicode ? charAt(S, index).length : 1); }; /***/ }, /***/ "./node_modules/core-js/internals/an-instance.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/an-instance.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsAnInstanceJs(module, exports) { module.exports = function (it, Constructor, name) { if (!(it instanceof Constructor)) { throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); } return it; }; /***/ }, /***/ "./node_modules/core-js/internals/an-object.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/an-object.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsAnObjectJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); module.exports = function (it) { if (!isObject(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; /***/ }, /***/ "./node_modules/core-js/internals/array-copy-within.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/array-copy-within.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayCopyWithinJs(module, exports, __webpack_require__) { "use strict"; var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toAbsoluteIndex = __webpack_require__( /*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var min = Math.min; // `Array.prototype.copyWithin` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin module.exports = [].copyWithin || function copyWithin(target /* = 0 */ , start /* = 0, end = @length */ ) { var O = toObject(this); var len = toLength(O.length); var to = toAbsoluteIndex(target, len); var from = toAbsoluteIndex(start, len); var end = arguments.length > 2 ? arguments[2] : undefined; var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); var inc = 1; if (from < to && to < from + count) { inc = -1; from += count - 1; to += count - 1; } while (count-- > 0) { if (from in O) O[to] = O[from];else delete O[to]; to += inc; from += inc; } return O; }; /***/ }, /***/ "./node_modules/core-js/internals/array-fill.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/array-fill.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayFillJs(module, exports, __webpack_require__) { "use strict"; var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toAbsoluteIndex = __webpack_require__( /*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); // `Array.prototype.fill` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.fill module.exports = function fill(value /* , start = 0, end = @length */ ) { var O = toObject(this); var length = toLength(O.length); var argumentsLength = arguments.length; var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length); var end = argumentsLength > 2 ? arguments[2] : undefined; var endPos = end === undefined ? length : toAbsoluteIndex(end, length); while (endPos > index) { O[index++] = value; } return O; }; /***/ }, /***/ "./node_modules/core-js/internals/array-for-each.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/array-for-each.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayForEachJs(module, exports, __webpack_require__) { "use strict"; var $forEach = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach; var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); // `Array.prototype.forEach` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.foreach module.exports = sloppyArrayMethod('forEach') ? function forEach(callbackfn /* , thisArg */ ) { return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } : [].forEach; /***/ }, /***/ "./node_modules/core-js/internals/array-from.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/array-from.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayFromJs(module, exports, __webpack_require__) { "use strict"; var bind = __webpack_require__( /*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var callWithSafeIterationClosing = __webpack_require__( /*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); var isArrayIteratorMethod = __webpack_require__( /*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var createProperty = __webpack_require__( /*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); var getIteratorMethod = __webpack_require__( /*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); // `Array.from` method implementation // https://tc39.github.io/ecma262/#sec-array.from module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */ ) { var O = toObject(arrayLike); var C = typeof this == 'function' ? this : Array; var argumentsLength = arguments.length; var mapfn = argumentsLength > 1 ? arguments[1] : undefined; var mapping = mapfn !== undefined; var index = 0; var iteratorMethod = getIteratorMethod(O); var length, result, step, iterator; if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2); // if the target is not iterable or it's an array with the default iterator - use a simple case if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { iterator = iteratorMethod.call(O); result = new C(); for (; !(step = iterator.next()).done; index++) { createProperty(result, index, mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value); } } else { length = toLength(O.length); result = new C(length); for (; length > index; index++) { createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); } } result.length = index; return result; }; /***/ }, /***/ "./node_modules/core-js/internals/array-includes.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/array-includes.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayIncludesJs(module, exports, __webpack_require__) { var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var toAbsoluteIndex = __webpack_require__( /*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function createMethod(IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (; length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; module.exports = { // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; /***/ }, /***/ "./node_modules/core-js/internals/array-iteration.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/array-iteration.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayIterationJs(module, exports, __webpack_require__) { var bind = __webpack_require__( /*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var IndexedObject = __webpack_require__( /*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var arraySpeciesCreate = __webpack_require__( /*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation var createMethod = function createMethod(TYPE) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; return function ($this, callbackfn, that, specificCreate) { var O = toObject($this); var self = IndexedObject(O); var boundFunction = bind(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var create = specificCreate || arraySpeciesCreate; var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var value, result; for (; length > index; index++) { if (NO_HOLES || index in self) { value = self[index]; result = boundFunction(value, index, O); if (TYPE) { if (IS_MAP) target[index] = result; // map else if (result) switch (TYPE) { case 3: return true; // some case 5: return value; // find case 6: return index; // findIndex case 2: push.call(target, value); // filter } else if (IS_EVERY) return false; // every } } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; }; }; module.exports = { // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach forEach: createMethod(0), // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map map: createMethod(1), // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter filter: createMethod(2), // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some some: createMethod(3), // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every every: createMethod(4), // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find find: createMethod(5), // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex findIndex: createMethod(6) }; /***/ }, /***/ "./node_modules/core-js/internals/array-last-index-of.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/array-last-index-of.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayLastIndexOfJs(module, exports, __webpack_require__) { "use strict"; var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); var min = Math.min; var nativeLastIndexOf = [].lastIndexOf; var NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0; var SLOPPY_METHOD = sloppyArrayMethod('lastIndexOf'); // `Array.prototype.lastIndexOf` method implementation // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof module.exports = NEGATIVE_ZERO || SLOPPY_METHOD ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */ ) { // convert -0 to +0 if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0; var O = toIndexedObject(this); var length = toLength(O.length); var index = length - 1; if (arguments.length > 1) index = min(index, toInteger(arguments[1])); if (index < 0) index = length + index; for (; index >= 0; index--) { if (index in O && O[index] === searchElement) return index || 0; } return -1; } : nativeLastIndexOf; /***/ }, /***/ "./node_modules/core-js/internals/array-method-has-species-support.js": /*!****************************************************************************!*\ !*** ./node_modules/core-js/internals/array-method-has-species-support.js ***! \****************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayMethodHasSpeciesSupportJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var SPECIES = wellKnownSymbol('species'); module.exports = function (METHOD_NAME) { return !fails(function () { var array = []; var constructor = array.constructor = {}; constructor[SPECIES] = function () { return { foo: 1 }; }; return array[METHOD_NAME](Boolean).foo !== 1; }); }; /***/ }, /***/ "./node_modules/core-js/internals/array-reduce.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/array-reduce.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArrayReduceJs(module, exports, __webpack_require__) { var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var IndexedObject = __webpack_require__( /*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); // `Array.prototype.{ reduce, reduceRight }` methods implementation var createMethod = function createMethod(IS_RIGHT) { return function (that, callbackfn, argumentsLength, memo) { aFunction(callbackfn); var O = toObject(that); var self = IndexedObject(O); var length = toLength(O.length); var index = IS_RIGHT ? length - 1 : 0; var i = IS_RIGHT ? -1 : 1; if (argumentsLength < 2) while (true) { if (index in self) { memo = self[index]; index += i; break; } index += i; if (IS_RIGHT ? index < 0 : length <= index) { throw TypeError('Reduce of empty array with no initial value'); } } for (; IS_RIGHT ? index >= 0 : length > index; index += i) { if (index in self) { memo = callbackfn(memo, self[index], index, O); } } return memo; }; }; module.exports = { // `Array.prototype.reduce` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduce left: createMethod(false), // `Array.prototype.reduceRight` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright right: createMethod(true) }; /***/ }, /***/ "./node_modules/core-js/internals/array-species-create.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/array-species-create.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsArraySpeciesCreateJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var isArray = __webpack_require__( /*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation // https://tc39.github.io/ecma262/#sec-arrayspeciescreate module.exports = function (originalArray, length) { var C; if (isArray(originalArray)) { C = originalArray.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;else if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); }; /***/ }, /***/ "./node_modules/core-js/internals/bind-context.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/bind-context.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsBindContextJs(module, exports, __webpack_require__) { var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); // optional / simple context binding module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 0: return function () { return fn.call(that); }; case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function () /* ...args */ { return fn.apply(that, arguments); }; }; /***/ }, /***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": /*!****************************************************************************!*\ !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***! \****************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCallWithSafeIterationClosingJs(module, exports, __webpack_require__) { var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); // call something on iterator step with safe closing on error module.exports = function (iterator, fn, value, ENTRIES) { try { return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch (error) { var returnMethod = iterator['return']; if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); throw error; } }; /***/ }, /***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js": /*!**************************************************************************!*\ !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***! \**************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCheckCorrectnessOfIterationJs(module, exports, __webpack_require__) { var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var ITERATOR = wellKnownSymbol('iterator'); var SAFE_CLOSING = false; try { var called = 0; var iteratorWithReturn = { next: function next() { return { done: !!called++ }; }, 'return': function _return() { SAFE_CLOSING = true; } }; iteratorWithReturn[ITERATOR] = function () { return this; }; // eslint-disable-next-line no-throw-literal Array.from(iteratorWithReturn, function () { throw 2; }); } catch (error) { /* empty */ } module.exports = function (exec, SKIP_CLOSING) { if (!SKIP_CLOSING && !SAFE_CLOSING) return false; var ITERATION_SUPPORT = false; try { var object = {}; object[ITERATOR] = function () { return { next: function next() { return { done: ITERATION_SUPPORT = true }; } }; }; exec(object); } catch (error) { /* empty */ } return ITERATION_SUPPORT; }; /***/ }, /***/ "./node_modules/core-js/internals/classof-raw.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/classof-raw.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsClassofRawJs(module, exports) { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }, /***/ "./node_modules/core-js/internals/classof.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/classof.js ***! \***************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsClassofJs(module, exports, __webpack_require__) { var classofRaw = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function tryGet(it, key) { try { return it[key]; } catch (error) { /* empty */ } }; // getting tag from ES6+ `Object.prototype.toString` module.exports = function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; }; /***/ }, /***/ "./node_modules/core-js/internals/collection-strong.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/collection-strong.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCollectionStrongJs(module, exports, __webpack_require__) { "use strict"; var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var create = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var redefineAll = __webpack_require__( /*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var bind = __webpack_require__( /*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var anInstance = __webpack_require__( /*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var iterate = __webpack_require__( /*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var defineIterator = __webpack_require__( /*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); var setSpecies = __webpack_require__( /*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var fastKey = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").fastKey; var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var setInternalState = InternalStateModule.set; var internalStateGetterFor = InternalStateModule.getterFor; module.exports = { getConstructor: function getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { var C = wrapper(function (that, iterable) { anInstance(that, C, CONSTRUCTOR_NAME); setInternalState(that, { type: CONSTRUCTOR_NAME, index: create(null), first: undefined, last: undefined, size: 0 }); if (!DESCRIPTORS) that.size = 0; if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); }); var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); var define = function define(that, key, value) { var state = getInternalState(that); var entry = getEntry(that, key); var previous, index; // change existing entry if (entry) { entry.value = value; // create new entry } else { state.last = entry = { index: index = fastKey(key, true), key: key, value: value, previous: previous = state.last, next: undefined, removed: false }; if (!state.first) state.first = entry; if (previous) previous.next = entry; if (DESCRIPTORS) state.size++;else that.size++; // add to index if (index !== 'F') state.index[index] = entry; } return that; }; var getEntry = function getEntry(that, key) { var state = getInternalState(that); // fast case var index = fastKey(key); var entry; if (index !== 'F') return state.index[index]; // frozen object case for (entry = state.first; entry; entry = entry.next) { if (entry.key == key) return entry; } }; redefineAll(C.prototype, { // 23.1.3.1 Map.prototype.clear() // 23.2.3.2 Set.prototype.clear() clear: function clear() { var that = this; var state = getInternalState(that); var data = state.index; var entry = state.first; while (entry) { entry.removed = true; if (entry.previous) entry.previous = entry.previous.next = undefined; delete data[entry.index]; entry = entry.next; } state.first = state.last = undefined; if (DESCRIPTORS) state.size = 0;else that.size = 0; }, // 23.1.3.3 Map.prototype.delete(key) // 23.2.3.4 Set.prototype.delete(value) 'delete': function _delete(key) { var that = this; var state = getInternalState(that); var entry = getEntry(that, key); if (entry) { var next = entry.next; var prev = entry.previous; delete state.index[entry.index]; entry.removed = true; if (prev) prev.next = next; if (next) next.previous = prev; if (state.first == entry) state.first = next; if (state.last == entry) state.last = prev; if (DESCRIPTORS) state.size--;else that.size--; } return !!entry; }, // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) forEach: function forEach(callbackfn /* , that = undefined */ ) { var state = getInternalState(this); var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); var entry; while (entry = entry ? entry.next : state.first) { boundFunction(entry.value, entry.key, this); // revert to the last existing entry while (entry && entry.removed) { entry = entry.previous; } } }, // 23.1.3.7 Map.prototype.has(key) // 23.2.3.7 Set.prototype.has(value) has: function has(key) { return !!getEntry(this, key); } }); redefineAll(C.prototype, IS_MAP ? { // 23.1.3.6 Map.prototype.get(key) get: function get(key) { var entry = getEntry(this, key); return entry && entry.value; }, // 23.1.3.9 Map.prototype.set(key, value) set: function set(key, value) { return define(this, key === 0 ? 0 : key, value); } } : { // 23.2.3.1 Set.prototype.add(value) add: function add(value) { return define(this, value = value === 0 ? 0 : value, value); } }); if (DESCRIPTORS) defineProperty(C.prototype, 'size', { get: function get() { return getInternalState(this).size; } }); return C; }, setStrong: function setStrong(C, CONSTRUCTOR_NAME, IS_MAP) { var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator'; var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME); var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME); // add .keys, .values, .entries, [@@iterator] // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) { setInternalState(this, { type: ITERATOR_NAME, target: iterated, state: getInternalCollectionState(iterated), kind: kind, last: undefined }); }, function () { var state = getInternalIteratorState(this); var kind = state.kind; var entry = state.last; // revert to the last existing entry while (entry && entry.removed) { entry = entry.previous; } // get next entry if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) { // or finish the iteration state.target = undefined; return { value: undefined, done: true }; } // return step by kind if (kind == 'keys') return { value: entry.key, done: false }; if (kind == 'values') return { value: entry.value, done: false }; return { value: [entry.key, entry.value], done: false }; }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // add [@@species], 23.1.2.2, 23.2.2.2 setSpecies(CONSTRUCTOR_NAME); } }; /***/ }, /***/ "./node_modules/core-js/internals/collection-weak.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/collection-weak.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCollectionWeakJs(module, exports, __webpack_require__) { "use strict"; var redefineAll = __webpack_require__( /*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var getWeakData = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").getWeakData; var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var anInstance = __webpack_require__( /*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var iterate = __webpack_require__( /*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var ArrayIterationModule = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js"); var $has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var setInternalState = InternalStateModule.set; var internalStateGetterFor = InternalStateModule.getterFor; var find = ArrayIterationModule.find; var findIndex = ArrayIterationModule.findIndex; var id = 0; // fallback for uncaught frozen keys var uncaughtFrozenStore = function uncaughtFrozenStore(store) { return store.frozen || (store.frozen = new UncaughtFrozenStore()); }; var UncaughtFrozenStore = function UncaughtFrozenStore() { this.entries = []; }; var findUncaughtFrozen = function findUncaughtFrozen(store, key) { return find(store.entries, function (it) { return it[0] === key; }); }; UncaughtFrozenStore.prototype = { get: function get(key) { var entry = findUncaughtFrozen(this, key); if (entry) return entry[1]; }, has: function has(key) { return !!findUncaughtFrozen(this, key); }, set: function set(key, value) { var entry = findUncaughtFrozen(this, key); if (entry) entry[1] = value;else this.entries.push([key, value]); }, 'delete': function _delete(key) { var index = findIndex(this.entries, function (it) { return it[0] === key; }); if (~index) this.entries.splice(index, 1); return !!~index; } }; module.exports = { getConstructor: function getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) { var C = wrapper(function (that, iterable) { anInstance(that, C, CONSTRUCTOR_NAME); setInternalState(that, { type: CONSTRUCTOR_NAME, id: id++, frozen: undefined }); if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); }); var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME); var define = function define(that, key, value) { var state = getInternalState(that); var data = getWeakData(anObject(key), true); if (data === true) uncaughtFrozenStore(state).set(key, value);else data[state.id] = value; return that; }; redefineAll(C.prototype, { // 23.3.3.2 WeakMap.prototype.delete(key) // 23.4.3.3 WeakSet.prototype.delete(value) 'delete': function _delete(key) { var state = getInternalState(this); if (!isObject(key)) return false; var data = getWeakData(key); if (data === true) return uncaughtFrozenStore(state)['delete'](key); return data && $has(data, state.id) && delete data[state.id]; }, // 23.3.3.4 WeakMap.prototype.has(key) // 23.4.3.4 WeakSet.prototype.has(value) has: function has(key) { var state = getInternalState(this); if (!isObject(key)) return false; var data = getWeakData(key); if (data === true) return uncaughtFrozenStore(state).has(key); return data && $has(data, state.id); } }); redefineAll(C.prototype, IS_MAP ? { // 23.3.3.3 WeakMap.prototype.get(key) get: function get(key) { var state = getInternalState(this); if (isObject(key)) { var data = getWeakData(key); if (data === true) return uncaughtFrozenStore(state).get(key); return data ? data[state.id] : undefined; } }, // 23.3.3.5 WeakMap.prototype.set(key, value) set: function set(key, value) { return define(this, key, value); } } : { // 23.4.3.1 WeakSet.prototype.add(value) add: function add(value) { return define(this, value, true); } }); return C; } }; /***/ }, /***/ "./node_modules/core-js/internals/collection.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/collection.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCollectionJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isForced = __webpack_require__( /*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var InternalMetadataModule = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js"); var iterate = __webpack_require__( /*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var anInstance = __webpack_require__( /*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var checkCorrectnessOfIteration = __webpack_require__( /*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var inheritIfRequired = __webpack_require__( /*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); module.exports = function (CONSTRUCTOR_NAME, wrapper, common, IS_MAP, IS_WEAK) { var NativeConstructor = global[CONSTRUCTOR_NAME]; var NativePrototype = NativeConstructor && NativeConstructor.prototype; var Constructor = NativeConstructor; var ADDER = IS_MAP ? 'set' : 'add'; var exported = {}; var fixMethod = function fixMethod(KEY) { var nativeMethod = NativePrototype[KEY]; redefine(NativePrototype, KEY, KEY == 'add' ? function add(value) { nativeMethod.call(this, value === 0 ? 0 : value); return this; } : KEY == 'delete' ? function (key) { return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); } : KEY == 'get' ? function get(key) { return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key); } : KEY == 'has' ? function has(key) { return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key); } : function set(key, value) { nativeMethod.call(this, key === 0 ? 0 : key, value); return this; }); }; // eslint-disable-next-line max-len if (isForced(CONSTRUCTOR_NAME, typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); })))) { // create collection constructor Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER); InternalMetadataModule.REQUIRED = true; } else if (isForced(CONSTRUCTOR_NAME, true)) { var instance = new Constructor(); // early implementations not supports chaining var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); // most early implementations doesn't supports iterables, most modern - not close it correctly // eslint-disable-next-line no-new var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); }); // for early implementations -0 and +0 not the same var BUGGY_ZERO = !IS_WEAK && fails(function () { // V8 ~ Chromium 42- fails only with 5+ elements var $instance = new NativeConstructor(); var index = 5; while (index--) { $instance[ADDER](index, index); } return !$instance.has(-0); }); if (!ACCEPT_ITERABLES) { Constructor = wrapper(function (dummy, iterable) { anInstance(dummy, Constructor, CONSTRUCTOR_NAME); var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor); if (iterable != undefined) iterate(iterable, that[ADDER], that, IS_MAP); return that; }); Constructor.prototype = NativePrototype; NativePrototype.constructor = Constructor; } if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { fixMethod('delete'); fixMethod('has'); IS_MAP && fixMethod('get'); } if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); // weak collections should not contains .clear method if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear; } exported[CONSTRUCTOR_NAME] = Constructor; $({ global: true, forced: Constructor != NativeConstructor }, exported); setToStringTag(Constructor, CONSTRUCTOR_NAME); if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP); return Constructor; }; /***/ }, /***/ "./node_modules/core-js/internals/copy-constructor-properties.js": /*!***********************************************************************!*\ !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***! \***********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCopyConstructorPropertiesJs(module, exports, __webpack_require__) { var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var ownKeys = __webpack_require__( /*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); var getOwnPropertyDescriptorModule = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); module.exports = function (target, source) { var keys = ownKeys(source); var defineProperty = definePropertyModule.f; var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } }; /***/ }, /***/ "./node_modules/core-js/internals/correct-is-regexp-logic.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/correct-is-regexp-logic.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCorrectIsRegexpLogicJs(module, exports, __webpack_require__) { var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var MATCH = wellKnownSymbol('match'); module.exports = function (METHOD_NAME) { var regexp = /./; try { '/./'[METHOD_NAME](regexp); } catch (e) { try { regexp[MATCH] = false; return '/./'[METHOD_NAME](regexp); } catch (f) { /* empty */ } } return false; }; /***/ }, /***/ "./node_modules/core-js/internals/correct-prototype-getter.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCorrectPrototypeGetterJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = !fails(function () { function F() { /* empty */ } F.prototype.constructor = null; return Object.getPrototypeOf(new F()) !== F.prototype; }); /***/ }, /***/ "./node_modules/core-js/internals/create-html.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/create-html.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCreateHtmlJs(module, exports, __webpack_require__) { var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var quot = /"/g; // B.2.3.2.1 CreateHTML(string, tag, attribute, value) // https://tc39.github.io/ecma262/#sec-createhtml module.exports = function (string, tag, attribute, value) { var S = String(requireObjectCoercible(string)); var p1 = '<' + tag; if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; return p1 + '>' + S + ''; }; /***/ }, /***/ "./node_modules/core-js/internals/create-iterator-constructor.js": /*!***********************************************************************!*\ !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***! \***********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCreateIteratorConstructorJs(module, exports, __webpack_require__) { "use strict"; var IteratorPrototype = __webpack_require__( /*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; var create = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var createPropertyDescriptor = __webpack_require__( /*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var Iterators = __webpack_require__( /*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var returnThis = function returnThis() { return this; }; module.exports = function (IteratorConstructor, NAME, next) { var TO_STRING_TAG = NAME + ' Iterator'; IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); Iterators[TO_STRING_TAG] = returnThis; return IteratorConstructor; }; /***/ }, /***/ "./node_modules/core-js/internals/create-property-descriptor.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/internals/create-property-descriptor.js ***! \**********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCreatePropertyDescriptorJs(module, exports) { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }, /***/ "./node_modules/core-js/internals/create-property.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/create-property.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsCreatePropertyJs(module, exports, __webpack_require__) { "use strict"; var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var createPropertyDescriptor = __webpack_require__( /*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); module.exports = function (object, key, value) { var propertyKey = toPrimitive(key); if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));else object[propertyKey] = value; }; /***/ }, /***/ "./node_modules/core-js/internals/date-to-iso-string.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/internals/date-to-iso-string.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDateToIsoStringJs(module, exports, __webpack_require__) { "use strict"; var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var padStart = __webpack_require__( /*! ../internals/string-pad */ "./node_modules/core-js/internals/string-pad.js").start; var abs = Math.abs; var DatePrototype = Date.prototype; var getTime = DatePrototype.getTime; var nativeDateToISOString = DatePrototype.toISOString; // `Date.prototype.toISOString` method implementation // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring // PhantomJS / old WebKit fails here: module.exports = fails(function () { return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z'; }) || !fails(function () { nativeDateToISOString.call(new Date(NaN)); }) ? function toISOString() { if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value'); var date = this; var year = date.getUTCFullYear(); var milliseconds = date.getUTCMilliseconds(); var sign = year < 0 ? '-' : year > 9999 ? '+' : ''; return sign + padStart(abs(year), sign ? 6 : 4, 0) + '-' + padStart(date.getUTCMonth() + 1, 2, 0) + '-' + padStart(date.getUTCDate(), 2, 0) + 'T' + padStart(date.getUTCHours(), 2, 0) + ':' + padStart(date.getUTCMinutes(), 2, 0) + ':' + padStart(date.getUTCSeconds(), 2, 0) + '.' + padStart(milliseconds, 3, 0) + 'Z'; } : nativeDateToISOString; /***/ }, /***/ "./node_modules/core-js/internals/date-to-primitive.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/date-to-primitive.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDateToPrimitiveJs(module, exports, __webpack_require__) { "use strict"; var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); module.exports = function (hint) { if (hint !== 'string' && hint !== 'number' && hint !== 'default') { throw TypeError('Incorrect hint'); } return toPrimitive(anObject(this), hint !== 'number'); }; /***/ }, /***/ "./node_modules/core-js/internals/define-iterator.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/define-iterator.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDefineIteratorJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createIteratorConstructor = __webpack_require__( /*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var setPrototypeOf = __webpack_require__( /*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var IS_PURE = __webpack_require__( /*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var Iterators = __webpack_require__( /*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var IteratorsCore = __webpack_require__( /*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js"); var IteratorPrototype = IteratorsCore.IteratorPrototype; var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; var ITERATOR = wellKnownSymbol('iterator'); var KEYS = 'keys'; var VALUES = 'values'; var ENTRIES = 'entries'; var returnThis = function returnThis() { return this; }; module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { createIteratorConstructor(IteratorConstructor, NAME, next); var getIterationMethod = function getIterationMethod(KIND) { if (KIND === DEFAULT && defaultIterator) return defaultIterator; if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; switch (KIND) { case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; } return function () { return new IteratorConstructor(this); }; }; var TO_STRING_TAG = NAME + ' Iterator'; var INCORRECT_VALUES_NAME = false; var IterablePrototype = Iterable.prototype; var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; var CurrentIteratorPrototype, methods, KEY; // fix native if (anyNativeIterator) { CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { if (setPrototypeOf) { setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { hide(CurrentIteratorPrototype, ITERATOR, returnThis); } } // Set @@toStringTag to native iterators setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { INCORRECT_VALUES_NAME = true; defaultIterator = function values() { return nativeIterator.call(this); }; } // define iterator if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { hide(IterablePrototype, ITERATOR, defaultIterator); } Iterators[NAME] = defaultIterator; // export additional methods if (DEFAULT) { methods = { values: getIterationMethod(VALUES), keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), entries: getIterationMethod(ENTRIES) }; if (FORCED) for (KEY in methods) { if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { redefine(IterablePrototype, KEY, methods[KEY]); } } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); } return methods; }; /***/ }, /***/ "./node_modules/core-js/internals/define-well-known-symbol.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/define-well-known-symbol.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDefineWellKnownSymbolJs(module, exports, __webpack_require__) { var path = __webpack_require__( /*! ../internals/path */ "./node_modules/core-js/internals/path.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var wrappedWellKnownSymbolModule = __webpack_require__( /*! ../internals/wrapped-well-known-symbol */ "./node_modules/core-js/internals/wrapped-well-known-symbol.js"); var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; module.exports = function (NAME) { var Symbol = path.Symbol || (path.Symbol = {}); if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { value: wrappedWellKnownSymbolModule.f(NAME) }); }; /***/ }, /***/ "./node_modules/core-js/internals/descriptors.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/descriptors.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDescriptorsJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); // Thank's IE8 for his funny defineProperty module.exports = !fails(function () { return Object.defineProperty({}, 'a', { get: function get() { return 7; } }).a != 7; }); /***/ }, /***/ "./node_modules/core-js/internals/document-create-element.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/document-create-element.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDocumentCreateElementJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var document = global.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document) && isObject(document.createElement); module.exports = function (it) { return EXISTS ? document.createElement(it) : {}; }; /***/ }, /***/ "./node_modules/core-js/internals/dom-iterables.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/dom-iterables.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsDomIterablesJs(module, exports) { // iterable DOM collections // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods module.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }; /***/ }, /***/ "./node_modules/core-js/internals/enum-bug-keys.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/enum-bug-keys.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsEnumBugKeysJs(module, exports) { // IE8- don't enum bug keys module.exports = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf']; /***/ }, /***/ "./node_modules/core-js/internals/export.js": /*!**************************************************!*\ !*** ./node_modules/core-js/internals/export.js ***! \**************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsExportJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var getOwnPropertyDescriptor = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var setGlobal = __webpack_require__( /*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); var copyConstructorProperties = __webpack_require__( /*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); var isForced = __webpack_require__( /*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.noTargetGet - prevent calling a getter on target */ module.exports = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global; } else if (STATIC) { target = global[TARGET] || setGlobal(TARGET, {}); } else { target = (global[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.noTargetGet) { descriptor = getOwnPropertyDescriptor(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty === typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || targetProperty && targetProperty.sham) { hide(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); } }; /***/ }, /***/ "./node_modules/core-js/internals/fails.js": /*!*************************************************!*\ !*** ./node_modules/core-js/internals/fails.js ***! \*************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsFailsJs(module, exports) { module.exports = function (exec) { try { return !!exec(); } catch (error) { return true; } }; /***/ }, /***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js": /*!******************************************************************************!*\ !*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***! \******************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsFixRegexpWellKnownSymbolLogicJs(module, exports, __webpack_require__) { "use strict"; var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var regexpExec = __webpack_require__( /*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); var SPECIES = wellKnownSymbol('species'); var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { // #replace needs built-in support for named groups. // #match works fine because it just return the exec results, even if it has // a "grops" property. var re = /./; re.exec = function () { var result = []; result.groups = { a: '7' }; return result; }; return ''.replace(re, '$') !== '7'; }); // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec // Weex JS has frozen built-in prototypes, so use try / catch wrapper var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { var re = /(?:)/; var originalExec = re.exec; re.exec = function () { return originalExec.apply(this, arguments); }; var result = 'ab'.split(re); return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; }); module.exports = function (KEY, length, exec, sham) { var SYMBOL = wellKnownSymbol(KEY); var DELEGATES_TO_SYMBOL = !fails(function () { // String methods call symbol-named RegEp methods var O = {}; O[SYMBOL] = function () { return 7; }; return ''[KEY](O) != 7; }); var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { // Symbol-named RegExp methods call .exec var execCalled = false; var re = /a/; re.exec = function () { execCalled = true; return null; }; if (KEY === 'split') { // RegExp[@@split] doesn't call the regex's exec method, but first creates // a new one. We need to return the patched regex when creating the new one. re.constructor = {}; re.constructor[SPECIES] = function () { return re; }; } re[SYMBOL](''); return !execCalled; }); if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS || KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) { var nativeRegExpMethod = /./[SYMBOL]; var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { if (regexp.exec === regexpExec) { if (DELEGATES_TO_SYMBOL && !forceStringMethod) { // The native String method already delegates to @@method (this // polyfilled function), leasing to infinite recursion. // We avoid it by directly calling the native @@method method. return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; } return { done: true, value: nativeMethod.call(str, regexp, arg2) }; } return { done: false }; }); var stringMethod = methods[0]; var regexMethod = methods[1]; redefine(String.prototype, KEY, stringMethod); redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) // 21.2.5.11 RegExp.prototype[@@split](string, limit) ? function (string, arg) { return regexMethod.call(string, this, arg); } // 21.2.5.6 RegExp.prototype[@@match](string) // 21.2.5.9 RegExp.prototype[@@search](string) : function (string) { return regexMethod.call(string, this); }); if (sham) hide(RegExp.prototype[SYMBOL], 'sham', true); } }; /***/ }, /***/ "./node_modules/core-js/internals/forced-string-html-method.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/internals/forced-string-html-method.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsForcedStringHtmlMethodJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); // check the existence of a method, lowercase // of a tag and escaping quotes in arguments module.exports = function (METHOD_NAME) { return fails(function () { var test = ''[METHOD_NAME]('"'); return test !== test.toLowerCase() || test.split('"').length > 3; }); }; /***/ }, /***/ "./node_modules/core-js/internals/forced-string-trim-method.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/internals/forced-string-trim-method.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsForcedStringTrimMethodJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var whitespaces = __webpack_require__( /*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); var non = "\u200B\x85\u180E"; // check that a method works with the correct list // of whitespaces and has a correct name module.exports = function (METHOD_NAME) { return fails(function () { return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; }); }; /***/ }, /***/ "./node_modules/core-js/internals/freezing.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/freezing.js ***! \****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsFreezingJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = !fails(function () { return Object.isExtensible(Object.preventExtensions({})); }); /***/ }, /***/ "./node_modules/core-js/internals/function-bind.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/function-bind.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsFunctionBindJs(module, exports, __webpack_require__) { "use strict"; var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var slice = [].slice; var factories = {}; var construct = function construct(C, argsLength, args) { if (!(argsLength in factories)) { for (var list = [], i = 0; i < argsLength; i++) { list[i] = 'a[' + i + ']'; } // eslint-disable-next-line no-new-func factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')'); } return factories[argsLength](C, args); }; // `Function.prototype.bind` method implementation // https://tc39.github.io/ecma262/#sec-function.prototype.bind module.exports = Function.bind || function bind(that /* , ...args */ ) { var fn = aFunction(this); var partArgs = slice.call(arguments, 1); var boundFunction = function bound() /* args... */ { var args = partArgs.concat(slice.call(arguments)); return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args); }; if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype; return boundFunction; }; /***/ }, /***/ "./node_modules/core-js/internals/function-to-string.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/internals/function-to-string.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsFunctionToStringJs(module, exports, __webpack_require__) { var shared = __webpack_require__( /*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); module.exports = shared('native-function-to-string', Function.toString); /***/ }, /***/ "./node_modules/core-js/internals/get-built-in.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/get-built-in.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsGetBuiltInJs(module, exports, __webpack_require__) { var path = __webpack_require__( /*! ../internals/path */ "./node_modules/core-js/internals/path.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var aFunction = function aFunction(variable) { return typeof variable == 'function' ? variable : undefined; }; module.exports = function (namespace, method) { return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; }; /***/ }, /***/ "./node_modules/core-js/internals/get-iterator-method.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/get-iterator-method.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsGetIteratorMethodJs(module, exports, __webpack_require__) { var classof = __webpack_require__( /*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); var Iterators = __webpack_require__( /*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var ITERATOR = wellKnownSymbol('iterator'); module.exports = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; /***/ }, /***/ "./node_modules/core-js/internals/global.js": /*!**************************************************!*\ !*** ./node_modules/core-js/internals/global.js ***! \**************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsGlobalJs(module, exports) { var O = 'object'; var check = function check(it) { return it && it.Math == Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = // eslint-disable-next-line no-undef check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global == O && global) || // eslint-disable-next-line no-new-func Function('return this')(); /***/ }, /***/ "./node_modules/core-js/internals/has.js": /*!***********************************************!*\ !*** ./node_modules/core-js/internals/has.js ***! \***********************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsHasJs(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }, /***/ "./node_modules/core-js/internals/hidden-keys.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/hidden-keys.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsHiddenKeysJs(module, exports) { module.exports = {}; /***/ }, /***/ "./node_modules/core-js/internals/hide.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/hide.js ***! \************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsHideJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var createPropertyDescriptor = __webpack_require__( /*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); module.exports = DESCRIPTORS ? function (object, key, value) { return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }, /***/ "./node_modules/core-js/internals/host-report-errors.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/internals/host-report-errors.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsHostReportErrorsJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); module.exports = function (a, b) { var console = global.console; if (console && console.error) { arguments.length === 1 ? console.error(a) : console.error(a, b); } }; /***/ }, /***/ "./node_modules/core-js/internals/html.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/html.js ***! \************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsHtmlJs(module, exports, __webpack_require__) { var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); module.exports = getBuiltIn('document', 'documentElement'); /***/ }, /***/ "./node_modules/core-js/internals/ie8-dom-define.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/ie8-dom-define.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIe8DomDefineJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var createElement = __webpack_require__( /*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); // Thank's IE8 for his funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { return Object.defineProperty(createElement('div'), 'a', { get: function get() { return 7; } }).a != 7; }); /***/ }, /***/ "./node_modules/core-js/internals/indexed-object.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/indexed-object.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIndexedObjectJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins return !Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) == 'String' ? split.call(it, '') : Object(it); } : Object; /***/ }, /***/ "./node_modules/core-js/internals/inherit-if-required.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/inherit-if-required.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsInheritIfRequiredJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var setPrototypeOf = __webpack_require__( /*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); // makes subclassing work correct for wrapped built-ins module.exports = function ($this, dummy, Wrapper) { var NewTarget, NewTargetPrototype; if ( // it can work only with native `setPrototypeOf` setPrototypeOf && // we haven't completely correct pre-ES6 way for getting `new.target`, so use this typeof (NewTarget = dummy.constructor) == 'function' && NewTarget !== Wrapper && isObject(NewTargetPrototype = NewTarget.prototype) && NewTargetPrototype !== Wrapper.prototype) setPrototypeOf($this, NewTargetPrototype); return $this; }; /***/ }, /***/ "./node_modules/core-js/internals/internal-metadata.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/internal-metadata.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsInternalMetadataJs(module, exports, __webpack_require__) { var hiddenKeys = __webpack_require__( /*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var uid = __webpack_require__( /*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var FREEZING = __webpack_require__( /*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); var METADATA = uid('meta'); var id = 0; var isExtensible = Object.isExtensible || function () { return true; }; var setMetadata = function setMetadata(it) { defineProperty(it, METADATA, { value: { objectID: 'O' + ++id, // object ID weakData: {} // weak collections IDs } }); }; var fastKey = function fastKey(it, create) { // return a primitive with prefix if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!has(it, METADATA)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; // not necessary to add metadata if (!create) return 'E'; // add missing metadata setMetadata(it); // return object ID } return it[METADATA].objectID; }; var getWeakData = function getWeakData(it, create) { if (!has(it, METADATA)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return true; // not necessary to add metadata if (!create) return false; // add missing metadata setMetadata(it); // return the store of weak collections IDs } return it[METADATA].weakData; }; // add metadata on freeze-family methods calling var onFreeze = function onFreeze(it) { if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it); return it; }; var meta = module.exports = { REQUIRED: false, fastKey: fastKey, getWeakData: getWeakData, onFreeze: onFreeze }; hiddenKeys[METADATA] = true; /***/ }, /***/ "./node_modules/core-js/internals/internal-state.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/internal-state.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsInternalStateJs(module, exports, __webpack_require__) { var NATIVE_WEAK_MAP = __webpack_require__( /*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var objectHas = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var sharedKey = __webpack_require__( /*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var hiddenKeys = __webpack_require__( /*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var WeakMap = global.WeakMap; var set, get, has; var enforce = function enforce(it) { return has(it) ? get(it) : set(it, {}); }; var getterFor = function getterFor(TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (NATIVE_WEAK_MAP) { var store = new WeakMap(); var wmget = store.get; var wmhas = store.has; var wmset = store.set; set = function set(it, metadata) { wmset.call(store, it, metadata); return metadata; }; get = function get(it) { return wmget.call(store, it) || {}; }; has = function has(it) { return wmhas.call(store, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function set(it, metadata) { hide(it, STATE, metadata); return metadata; }; get = function get(it) { return objectHas(it, STATE) ? it[STATE] : {}; }; has = function has(it) { return objectHas(it, STATE); }; } module.exports = { set: set, get: get, has: has, enforce: enforce, getterFor: getterFor }; /***/ }, /***/ "./node_modules/core-js/internals/is-array-iterator-method.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsArrayIteratorMethodJs(module, exports, __webpack_require__) { var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var Iterators = __webpack_require__( /*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var ITERATOR = wellKnownSymbol('iterator'); var ArrayPrototype = Array.prototype; // check on default Array iterator module.exports = function (it) { return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); }; /***/ }, /***/ "./node_modules/core-js/internals/is-array.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/is-array.js ***! \****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsArrayJs(module, exports, __webpack_require__) { var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); // `IsArray` abstract operation // https://tc39.github.io/ecma262/#sec-isarray module.exports = Array.isArray || function isArray(arg) { return classof(arg) == 'Array'; }; /***/ }, /***/ "./node_modules/core-js/internals/is-forced.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/is-forced.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsForcedJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var replacement = /#|\.prototype\./; var isForced = function isForced(feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; module.exports = isForced; /***/ }, /***/ "./node_modules/core-js/internals/is-integer.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/is-integer.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsIntegerJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var floor = Math.floor; // `Number.isInteger` method implementation // https://tc39.github.io/ecma262/#sec-number.isinteger module.exports = function isInteger(it) { return !isObject(it) && isFinite(it) && floor(it) === it; }; /***/ }, /***/ "./node_modules/core-js/internals/is-object.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/is-object.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsObjectJs(module, exports) { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }, /***/ "./node_modules/core-js/internals/is-pure.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/is-pure.js ***! \***************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsPureJs(module, exports) { module.exports = false; /***/ }, /***/ "./node_modules/core-js/internals/is-regexp.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/is-regexp.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIsRegexpJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation // https://tc39.github.io/ecma262/#sec-isregexp module.exports = function (it) { var isRegExp; return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); }; /***/ }, /***/ "./node_modules/core-js/internals/iterate.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/iterate.js ***! \***************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIterateJs(module, exports, __webpack_require__) { var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isArrayIteratorMethod = __webpack_require__( /*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var bind = __webpack_require__( /*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var getIteratorMethod = __webpack_require__( /*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js"); var callWithSafeIterationClosing = __webpack_require__( /*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); var Result = function Result(stopped, result) { this.stopped = stopped; this.result = result; }; var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); var iterator, iterFn, index, length, result, step; if (IS_ITERATOR) { iterator = iterable; } else { iterFn = getIteratorMethod(iterable); if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators if (isArrayIteratorMethod(iterFn)) { for (index = 0, length = toLength(iterable.length); length > index; index++) { result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); if (result && result instanceof Result) return result; } return new Result(false); } iterator = iterFn.call(iterable); } while (!(step = iterator.next()).done) { result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); if (result && result instanceof Result) return result; } return new Result(false); }; iterate.stop = function (result) { return new Result(true, result); }; /***/ }, /***/ "./node_modules/core-js/internals/iterators-core.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/internals/iterators-core.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIteratorsCoreJs(module, exports, __webpack_require__) { "use strict"; var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var IS_PURE = __webpack_require__( /*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var ITERATOR = wellKnownSymbol('iterator'); var BUGGY_SAFARI_ITERATORS = false; var returnThis = function returnThis() { return this; }; // `%IteratorPrototype%` object // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; if ([].keys) { arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;else { PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; } } if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); module.exports = { IteratorPrototype: IteratorPrototype, BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; /***/ }, /***/ "./node_modules/core-js/internals/iterators.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/iterators.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsIteratorsJs(module, exports) { module.exports = {}; /***/ }, /***/ "./node_modules/core-js/internals/math-expm1.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/math-expm1.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsMathExpm1Js(module, exports) { var nativeExpm1 = Math.expm1; var exp = Math.exp; // `Math.expm1` method implementation // https://tc39.github.io/ecma262/#sec-math.expm1 module.exports = !nativeExpm1 // Old FF bug || nativeExpm1(10) > 22025.465794806719 || nativeExpm1(10) < 22025.4657948067165168 // Tor Browser bug || nativeExpm1(-2e-17) != -2e-17 ? function expm1(x) { return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1; } : nativeExpm1; /***/ }, /***/ "./node_modules/core-js/internals/math-fround.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/math-fround.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsMathFroundJs(module, exports, __webpack_require__) { var sign = __webpack_require__( /*! ../internals/math-sign */ "./node_modules/core-js/internals/math-sign.js"); var abs = Math.abs; var pow = Math.pow; var EPSILON = pow(2, -52); var EPSILON32 = pow(2, -23); var MAX32 = pow(2, 127) * (2 - EPSILON32); var MIN32 = pow(2, -126); var roundTiesToEven = function roundTiesToEven(n) { return n + 1 / EPSILON - 1 / EPSILON; }; // `Math.fround` method implementation // https://tc39.github.io/ecma262/#sec-math.fround module.exports = Math.fround || function fround(x) { var $abs = abs(x); var $sign = sign(x); var a, result; if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; a = (1 + EPSILON32 / EPSILON) * $abs; result = a - (a - $abs); // eslint-disable-next-line no-self-compare if (result > MAX32 || result != result) return $sign * Infinity; return $sign * result; }; /***/ }, /***/ "./node_modules/core-js/internals/math-log1p.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/math-log1p.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsMathLog1pJs(module, exports) { var log = Math.log; // `Math.log1p` method implementation // https://tc39.github.io/ecma262/#sec-math.log1p module.exports = Math.log1p || function log1p(x) { return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x); }; /***/ }, /***/ "./node_modules/core-js/internals/math-sign.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/math-sign.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsMathSignJs(module, exports) { // `Math.sign` method implementation // https://tc39.github.io/ecma262/#sec-math.sign module.exports = Math.sign || function sign(x) { // eslint-disable-next-line no-self-compare return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; }; /***/ }, /***/ "./node_modules/core-js/internals/microtask.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/microtask.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsMicrotaskJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var getOwnPropertyDescriptor = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var macrotask = __webpack_require__( /*! ../internals/task */ "./node_modules/core-js/internals/task.js").set; var userAgent = __webpack_require__( /*! ../internals/user-agent */ "./node_modules/core-js/internals/user-agent.js"); var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; var process = global.process; var Promise = global.Promise; var IS_NODE = classof(process) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method if (!queueMicrotask) { flush = function flush() { var parent, fn; if (IS_NODE && (parent = process.domain)) parent.exit(); while (head) { fn = head.fn; head = head.next; try { fn(); } catch (error) { if (head) notify();else last = undefined; throw error; } } last = undefined; if (parent) parent.enter(); }; // Node.js if (IS_NODE) { notify = function notify() { process.nextTick(flush); }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 } else if (MutationObserver && !/(iphone|ipod|ipad).*applewebkit/i.test(userAgent)) { toggle = true; node = document.createTextNode(''); new MutationObserver(flush).observe(node, { characterData: true }); // eslint-disable-line no-new notify = function notify() { node.data = toggle = !toggle; }; // environments with maybe non-completely correct, but existent Promise } else if (Promise && Promise.resolve) { // Promise.resolve without an argument throws an error in LG WebOS 2 promise = Promise.resolve(undefined); then = promise.then; notify = function notify() { then.call(promise, flush); }; // for other environments - macrotask based on: // - setImmediate // - MessageChannel // - window.postMessag // - onreadystatechange // - setTimeout } else { notify = function notify() { // strange IE + webpack dev server bug - use .call(global) macrotask.call(global, flush); }; } } module.exports = queueMicrotask || function (fn) { var task = { fn: fn, next: undefined }; if (last) last.next = task; if (!head) { head = task; notify(); } last = task; }; /***/ }, /***/ "./node_modules/core-js/internals/native-promise-constructor.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/internals/native-promise-constructor.js ***! \**********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsNativePromiseConstructorJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); module.exports = global.Promise; /***/ }, /***/ "./node_modules/core-js/internals/native-symbol.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/native-symbol.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsNativeSymbolJs(module, exports, __webpack_require__) { var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = !!Object.getOwnPropertySymbols && !fails(function () { // Chrome 38 Symbol has incorrect toString conversion // eslint-disable-next-line no-undef return !String(Symbol()); }); /***/ }, /***/ "./node_modules/core-js/internals/native-weak-map.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/native-weak-map.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsNativeWeakMapJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var nativeFunctionToString = __webpack_require__( /*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); var WeakMap = global.WeakMap; module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); /***/ }, /***/ "./node_modules/core-js/internals/new-promise-capability.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/internals/new-promise-capability.js ***! \******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsNewPromiseCapabilityJs(module, exports, __webpack_require__) { "use strict"; var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var PromiseCapability = function PromiseCapability(C) { var resolve, reject; this.promise = new C(function ($$resolve, $$reject) { if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); resolve = $$resolve; reject = $$reject; }); this.resolve = aFunction(resolve); this.reject = aFunction(reject); }; // 25.4.1.5 NewPromiseCapability(C) module.exports.f = function (C) { return new PromiseCapability(C); }; /***/ }, /***/ "./node_modules/core-js/internals/not-a-regexp.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/not-a-regexp.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsNotARegexpJs(module, exports, __webpack_require__) { var isRegExp = __webpack_require__( /*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js"); module.exports = function (it) { if (isRegExp(it)) { throw TypeError("The method doesn't accept regular expressions"); } return it; }; /***/ }, /***/ "./node_modules/core-js/internals/number-is-finite.js": /*!************************************************************!*\ !*** ./node_modules/core-js/internals/number-is-finite.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsNumberIsFiniteJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var globalIsFinite = global.isFinite; // `Number.isFinite` method // https://tc39.github.io/ecma262/#sec-number.isfinite module.exports = Number.isFinite || function isFinite(it) { return typeof it == 'number' && globalIsFinite(it); }; /***/ }, /***/ "./node_modules/core-js/internals/object-assign.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/object-assign.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectAssignJs(module, exports, __webpack_require__) { "use strict"; var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var objectKeys = __webpack_require__( /*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); var getOwnPropertySymbolsModule = __webpack_require__( /*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); var propertyIsEnumerableModule = __webpack_require__( /*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var IndexedObject = __webpack_require__( /*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var nativeAssign = Object.assign; // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign // should work with symbols and should have deterministic property order (V8 bug) module.exports = !nativeAssign || fails(function () { var A = {}; var B = {}; // eslint-disable-next-line no-undef var symbol = Symbol(); var alphabet = 'abcdefghijklmnopqrst'; A[symbol] = 7; alphabet.split('').forEach(function (chr) { B[chr] = chr; }); return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; }) ? function assign(target, source) { // eslint-disable-line no-unused-vars var T = toObject(target); var argumentsLength = arguments.length; var index = 1; var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; var propertyIsEnumerable = propertyIsEnumerableModule.f; while (argumentsLength > index) { var S = IndexedObject(arguments[index++]); var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); var length = keys.length; var j = 0; var key; while (length > j) { key = keys[j++]; if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; } } return T; } : nativeAssign; /***/ }, /***/ "./node_modules/core-js/internals/object-create.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/object-create.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectCreateJs(module, exports, __webpack_require__) { var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var defineProperties = __webpack_require__( /*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); var enumBugKeys = __webpack_require__( /*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = __webpack_require__( /*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var html = __webpack_require__( /*! ../internals/html */ "./node_modules/core-js/internals/html.js"); var documentCreateElement = __webpack_require__( /*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); var sharedKey = __webpack_require__( /*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var IE_PROTO = sharedKey('IE_PROTO'); var PROTOTYPE = 'prototype'; var Empty = function Empty() { /* empty */ }; // Create object with fake `null` prototype: use iframe Object with cleared prototype var _createDict = function createDict() { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); var length = enumBugKeys.length; var lt = '<'; var script = 'script'; var gt = '>'; var js = 'java' + script + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); iframe.src = String(js); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); iframeDocument.close(); _createDict = iframeDocument.F; while (length--) { delete _createDict[PROTOTYPE][enumBugKeys[length]]; } return _createDict(); }; // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { Empty[PROTOTYPE] = anObject(O); result = new Empty(); Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = _createDict(); return Properties === undefined ? result : defineProperties(result, Properties); }; hiddenKeys[IE_PROTO] = true; /***/ }, /***/ "./node_modules/core-js/internals/object-define-properties.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/object-define-properties.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectDefinePropertiesJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var objectKeys = __webpack_require__( /*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = objectKeys(Properties); var length = keys.length; var index = 0; var key; while (length > index) { definePropertyModule.f(O, key = keys[index++], Properties[key]); } return O; }; /***/ }, /***/ "./node_modules/core-js/internals/object-define-property.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/internals/object-define-property.js ***! \******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectDefinePropertyJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var IE8_DOM_DEFINE = __webpack_require__( /*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return nativeDefineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }, /***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js": /*!******************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***! \******************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var propertyIsEnumerableModule = __webpack_require__( /*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); var createPropertyDescriptor = __webpack_require__( /*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var IE8_DOM_DEFINE = __webpack_require__( /*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js"); var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { return nativeGetOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); }; /***/ }, /***/ "./node_modules/core-js/internals/object-get-own-property-names-external.js": /*!**********************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-names-external.js ***! \**********************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectGetOwnPropertyNamesExternalJs(module, exports, __webpack_require__) { var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var nativeGetOwnPropertyNames = __webpack_require__( /*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f; var toString = {}.toString; var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function getWindowNames(it) { try { return nativeGetOwnPropertyNames(it); } catch (error) { return windowNames.slice(); } }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window module.exports.f = function getOwnPropertyNames(it) { return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it)); }; /***/ }, /***/ "./node_modules/core-js/internals/object-get-own-property-names.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***! \*************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectGetOwnPropertyNamesJs(module, exports, __webpack_require__) { var internalObjectKeys = __webpack_require__( /*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__( /*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; /***/ }, /***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js": /*!***************************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***! \***************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectGetOwnPropertySymbolsJs(module, exports) { exports.f = Object.getOwnPropertySymbols; /***/ }, /***/ "./node_modules/core-js/internals/object-get-prototype-of.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectGetPrototypeOfJs(module, exports, __webpack_require__) { var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var sharedKey = __webpack_require__( /*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var CORRECT_PROTOTYPE_GETTER = __webpack_require__( /*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); var IE_PROTO = sharedKey('IE_PROTO'); var ObjectPrototype = Object.prototype; // `Object.getPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.getprototypeof module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectPrototype : null; }; /***/ }, /***/ "./node_modules/core-js/internals/object-keys-internal.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/object-keys-internal.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectKeysInternalJs(module, exports, __webpack_require__) { var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var indexOf = __webpack_require__( /*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf; var hiddenKeys = __webpack_require__( /*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); module.exports = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) { !has(hiddenKeys, key) && has(O, key) && result.push(key); } // Don't enum bug & hidden keys while (names.length > i) { if (has(O, key = names[i++])) { ~indexOf(result, key) || result.push(key); } } return result; }; /***/ }, /***/ "./node_modules/core-js/internals/object-keys.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/object-keys.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectKeysJs(module, exports, __webpack_require__) { var internalObjectKeys = __webpack_require__( /*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__( /*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js"); // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys module.exports = Object.keys || function keys(O) { return internalObjectKeys(O, enumBugKeys); }; /***/ }, /***/ "./node_modules/core-js/internals/object-property-is-enumerable.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***! \*************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectPropertyIsEnumerableJs(module, exports, __webpack_require__) { "use strict"; var nativePropertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : nativePropertyIsEnumerable; /***/ }, /***/ "./node_modules/core-js/internals/object-set-prototype-of.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectSetPrototypeOfJs(module, exports, __webpack_require__) { var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var aPossiblePrototype = __webpack_require__( /*! ../internals/a-possible-prototype */ "./node_modules/core-js/internals/a-possible-prototype.js"); // `Object.setPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.setprototypeof // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { var CORRECT_SETTER = false; var test = {}; var setter; try { setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; setter.call(test, []); CORRECT_SETTER = test instanceof Array; } catch (error) { /* empty */ } return function setPrototypeOf(O, proto) { anObject(O); aPossiblePrototype(proto); if (CORRECT_SETTER) setter.call(O, proto);else O.__proto__ = proto; return O; }; }() : undefined); /***/ }, /***/ "./node_modules/core-js/internals/object-to-string.js": /*!************************************************************!*\ !*** ./node_modules/core-js/internals/object-to-string.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsObjectToStringJs(module, exports, __webpack_require__) { "use strict"; var classof = __webpack_require__( /*! ../internals/classof */ "./node_modules/core-js/internals/classof.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); var test = {}; test[TO_STRING_TAG] = 'z'; // `Object.prototype.toString` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.tostring module.exports = String(test) !== '[object z]' ? function toString() { return '[object ' + classof(this) + ']'; } : test.toString; /***/ }, /***/ "./node_modules/core-js/internals/own-keys.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/own-keys.js ***! \****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsOwnKeysJs(module, exports, __webpack_require__) { var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var getOwnPropertyNamesModule = __webpack_require__( /*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); var getOwnPropertySymbolsModule = __webpack_require__( /*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); // all object keys, includes non-enumerable and symbols module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = getOwnPropertyNamesModule.f(anObject(it)); var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; }; /***/ }, /***/ "./node_modules/core-js/internals/parse-float.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/parse-float.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsParseFloatJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var trim = __webpack_require__( /*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim; var whitespaces = __webpack_require__( /*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); var nativeParseFloat = global.parseFloat; var FORCED = 1 / nativeParseFloat(whitespaces + '-0') !== -Infinity; // `parseFloat` method // https://tc39.github.io/ecma262/#sec-parsefloat-string module.exports = FORCED ? function parseFloat(string) { var trimmedString = trim(String(string)); var result = nativeParseFloat(trimmedString); return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result; } : nativeParseFloat; /***/ }, /***/ "./node_modules/core-js/internals/parse-int.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/parse-int.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsParseIntJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var trim = __webpack_require__( /*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim; var whitespaces = __webpack_require__( /*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); var nativeParseInt = global.parseInt; var hex = /^[+-]?0[Xx]/; var FORCED = nativeParseInt(whitespaces + '08') !== 8 || nativeParseInt(whitespaces + '0x16') !== 22; // `parseInt` method // https://tc39.github.io/ecma262/#sec-parseint-string-radix module.exports = FORCED ? function parseInt(string, radix) { var S = trim(String(string)); return nativeParseInt(S, radix >>> 0 || (hex.test(S) ? 16 : 10)); } : nativeParseInt; /***/ }, /***/ "./node_modules/core-js/internals/path.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/path.js ***! \************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsPathJs(module, exports, __webpack_require__) { module.exports = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); /***/ }, /***/ "./node_modules/core-js/internals/perform.js": /*!***************************************************!*\ !*** ./node_modules/core-js/internals/perform.js ***! \***************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsPerformJs(module, exports) { module.exports = function (exec) { try { return { error: false, value: exec() }; } catch (error) { return { error: true, value: error }; } }; /***/ }, /***/ "./node_modules/core-js/internals/promise-resolve.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/internals/promise-resolve.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsPromiseResolveJs(module, exports, __webpack_require__) { var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var newPromiseCapability = __webpack_require__( /*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); module.exports = function (C, x) { anObject(C); if (isObject(x) && x.constructor === C) return x; var promiseCapability = newPromiseCapability.f(C); var resolve = promiseCapability.resolve; resolve(x); return promiseCapability.promise; }; /***/ }, /***/ "./node_modules/core-js/internals/redefine-all.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/redefine-all.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsRedefineAllJs(module, exports, __webpack_require__) { var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); module.exports = function (target, src, options) { for (var key in src) { redefine(target, key, src[key], options); } return target; }; /***/ }, /***/ "./node_modules/core-js/internals/redefine.js": /*!****************************************************!*\ !*** ./node_modules/core-js/internals/redefine.js ***! \****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsRedefineJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var shared = __webpack_require__( /*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var setGlobal = __webpack_require__( /*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); var nativeFunctionToString = __webpack_require__( /*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js"); var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var getInternalState = InternalStateModule.get; var enforceInternalState = InternalStateModule.enforce; var TEMPLATE = String(nativeFunctionToString).split('toString'); shared('inspectSource', function (it) { return nativeFunctionToString.call(it); }); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global) { if (simple) O[key] = value;else setGlobal(key, value); return; } else if (!unsafe) { delete O[key]; } else if (!noTargetGet && O[key]) { simple = true; } if (simple) O[key] = value;else hide(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); }); /***/ }, /***/ "./node_modules/core-js/internals/reflect-metadata.js": /*!************************************************************!*\ !*** ./node_modules/core-js/internals/reflect-metadata.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsReflectMetadataJs(module, exports, __webpack_require__) { // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` var Map = __webpack_require__( /*! ../modules/es.map */ "./node_modules/core-js/modules/es.map.js"); var WeakMap = __webpack_require__( /*! ../modules/es.weak-map */ "./node_modules/core-js/modules/es.weak-map.js"); var shared = __webpack_require__( /*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var metadata = shared('metadata'); var store = metadata.store || (metadata.store = new WeakMap()); var getOrCreateMetadataMap = function getOrCreateMetadataMap(target, targetKey, create) { var targetMetadata = store.get(target); if (!targetMetadata) { if (!create) return; store.set(target, targetMetadata = new Map()); } var keyMetadata = targetMetadata.get(targetKey); if (!keyMetadata) { if (!create) return; targetMetadata.set(targetKey, keyMetadata = new Map()); } return keyMetadata; }; var ordinaryHasOwnMetadata = function ordinaryHasOwnMetadata(MetadataKey, O, P) { var metadataMap = getOrCreateMetadataMap(O, P, false); return metadataMap === undefined ? false : metadataMap.has(MetadataKey); }; var ordinaryGetOwnMetadata = function ordinaryGetOwnMetadata(MetadataKey, O, P) { var metadataMap = getOrCreateMetadataMap(O, P, false); return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); }; var ordinaryDefineOwnMetadata = function ordinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) { getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); }; var ordinaryOwnMetadataKeys = function ordinaryOwnMetadataKeys(target, targetKey) { var metadataMap = getOrCreateMetadataMap(target, targetKey, false); var keys = []; if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); }); return keys; }; var toMetadataKey = function toMetadataKey(it) { return it === undefined || typeof it == 'symbol' ? it : String(it); }; module.exports = { store: store, getMap: getOrCreateMetadataMap, has: ordinaryHasOwnMetadata, get: ordinaryGetOwnMetadata, set: ordinaryDefineOwnMetadata, keys: ordinaryOwnMetadataKeys, toKey: toMetadataKey }; /***/ }, /***/ "./node_modules/core-js/internals/regexp-exec-abstract.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsRegexpExecAbstractJs(module, exports, __webpack_require__) { var classof = __webpack_require__( /*! ./classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var regexpExec = __webpack_require__( /*! ./regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); // `RegExpExec` abstract operation // https://tc39.github.io/ecma262/#sec-regexpexec module.exports = function (R, S) { var exec = R.exec; if (typeof exec === 'function') { var result = exec.call(R, S); if (typeof result !== 'object') { throw TypeError('RegExp exec method returned something other than an Object or null'); } return result; } if (classof(R) !== 'RegExp') { throw TypeError('RegExp#exec called on incompatible receiver'); } return regexpExec.call(R, S); }; /***/ }, /***/ "./node_modules/core-js/internals/regexp-exec.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/regexp-exec.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsRegexpExecJs(module, exports, __webpack_require__) { "use strict"; var regexpFlags = __webpack_require__( /*! ./regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, // which loads this file before patching the method. var nativeReplace = String.prototype.replace; var patchedExec = nativeExec; var UPDATES_LAST_INDEX_WRONG = function () { var re1 = /a/; var re2 = /b*/g; nativeExec.call(re1, 'a'); nativeExec.call(re2, 'a'); return re1.lastIndex !== 0 || re2.lastIndex !== 0; }(); // nonparticipating capturing group, copied from es5-shim's String#split patch. var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; if (PATCH) { patchedExec = function exec(str) { var re = this; var lastIndex, reCopy, match, i; if (NPCG_INCLUDED) { reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); } if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; match = nativeExec.call(re, str); if (UPDATES_LAST_INDEX_WRONG && match) { re.lastIndex = re.global ? match.index + match[0].length : lastIndex; } if (NPCG_INCLUDED && match && match.length > 1) { // Fix browsers whose `exec` methods don't consistently return `undefined` // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ nativeReplace.call(match[0], reCopy, function () { for (i = 1; i < arguments.length - 2; i++) { if (arguments[i] === undefined) match[i] = undefined; } }); } return match; }; } module.exports = patchedExec; /***/ }, /***/ "./node_modules/core-js/internals/regexp-flags.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/regexp-flags.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsRegexpFlagsJs(module, exports, __webpack_require__) { "use strict"; var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); // `RegExp.prototype.flags` getter implementation // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags module.exports = function () { var that = anObject(this); var result = ''; if (that.global) result += 'g'; if (that.ignoreCase) result += 'i'; if (that.multiline) result += 'm'; if (that.dotAll) result += 's'; if (that.unicode) result += 'u'; if (that.sticky) result += 'y'; return result; }; /***/ }, /***/ "./node_modules/core-js/internals/require-object-coercible.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/internals/require-object-coercible.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsRequireObjectCoercibleJs(module, exports) { // `RequireObjectCoercible` abstract operation // https://tc39.github.io/ecma262/#sec-requireobjectcoercible module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }, /***/ "./node_modules/core-js/internals/same-value.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/same-value.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSameValueJs(module, exports) { // `SameValue` abstract operation // https://tc39.github.io/ecma262/#sec-samevalue module.exports = Object.is || function is(x, y) { // eslint-disable-next-line no-self-compare return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; }; /***/ }, /***/ "./node_modules/core-js/internals/set-global.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/set-global.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSetGlobalJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); module.exports = function (key, value) { try { hide(global, key, value); } catch (error) { global[key] = value; } return value; }; /***/ }, /***/ "./node_modules/core-js/internals/set-species.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/set-species.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSetSpeciesJs(module, exports, __webpack_require__) { "use strict"; var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var SPECIES = wellKnownSymbol('species'); module.exports = function (CONSTRUCTOR_NAME) { var Constructor = getBuiltIn(CONSTRUCTOR_NAME); var defineProperty = definePropertyModule.f; if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { defineProperty(Constructor, SPECIES, { configurable: true, get: function get() { return this; } }); } }; /***/ }, /***/ "./node_modules/core-js/internals/set-to-string-tag.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/set-to-string-tag.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSetToStringTagJs(module, exports, __webpack_require__) { var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); module.exports = function (it, TAG, STATIC) { if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); } }; /***/ }, /***/ "./node_modules/core-js/internals/shared-key.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/shared-key.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSharedKeyJs(module, exports, __webpack_require__) { var shared = __webpack_require__( /*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var uid = __webpack_require__( /*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var keys = shared('keys'); module.exports = function (key) { return keys[key] || (keys[key] = uid(key)); }; /***/ }, /***/ "./node_modules/core-js/internals/shared.js": /*!**************************************************!*\ !*** ./node_modules/core-js/internals/shared.js ***! \**************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSharedJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var setGlobal = __webpack_require__( /*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js"); var IS_PURE = __webpack_require__( /*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var SHARED = '__core-js_shared__'; var store = global[SHARED] || setGlobal(SHARED, {}); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.2.1', mode: IS_PURE ? 'pure' : 'global', copyright: '© 2019 Denis Pushkarev (zloirock.ru)' }); /***/ }, /***/ "./node_modules/core-js/internals/sloppy-array-method.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/sloppy-array-method.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSloppyArrayMethodJs(module, exports, __webpack_require__) { "use strict"; var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); module.exports = function (METHOD_NAME, argument) { var method = [][METHOD_NAME]; return !method || !fails(function () { // eslint-disable-next-line no-useless-call,no-throw-literal method.call(null, argument || function () { throw 1; }, 1); }); }; /***/ }, /***/ "./node_modules/core-js/internals/species-constructor.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/internals/species-constructor.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsSpeciesConstructorJs(module, exports, __webpack_require__) { var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var SPECIES = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation // https://tc39.github.io/ecma262/#sec-speciesconstructor module.exports = function (O, defaultConstructor) { var C = anObject(O).constructor; var S; return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); }; /***/ }, /***/ "./node_modules/core-js/internals/string-multibyte.js": /*!************************************************************!*\ !*** ./node_modules/core-js/internals/string-multibyte.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsStringMultibyteJs(module, exports, __webpack_require__) { var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); // `String.prototype.{ codePointAt, at }` methods implementation var createMethod = function createMethod(CONVERT_TO_STRING) { return function ($this, pos) { var S = String(requireObjectCoercible($this)); var position = toInteger(pos); var size = S.length; var first, second; if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; first = S.charCodeAt(position); return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; }; }; module.exports = { // `String.prototype.codePointAt` method // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat codeAt: createMethod(false), // `String.prototype.at` method // https://github.com/mathiasbynens/String.prototype.at charAt: createMethod(true) }; /***/ }, /***/ "./node_modules/core-js/internals/string-pad.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/string-pad.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsStringPadJs(module, exports, __webpack_require__) { // https://github.com/tc39/proposal-string-pad-start-end var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var repeat = __webpack_require__( /*! ../internals/string-repeat */ "./node_modules/core-js/internals/string-repeat.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var ceil = Math.ceil; // `String.prototype.{ padStart, padEnd }` methods implementation var createMethod = function createMethod(IS_END) { return function ($this, maxLength, fillString) { var S = String(requireObjectCoercible($this)); var stringLength = S.length; var fillStr = fillString === undefined ? ' ' : String(fillString); var intMaxLength = toLength(maxLength); var fillLen, stringFiller; if (intMaxLength <= stringLength || fillStr == '') return S; fillLen = intMaxLength - stringLength; stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length)); if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); return IS_END ? S + stringFiller : stringFiller + S; }; }; module.exports = { // `String.prototype.padStart` method // https://tc39.github.io/ecma262/#sec-string.prototype.padstart start: createMethod(false), // `String.prototype.padEnd` method // https://tc39.github.io/ecma262/#sec-string.prototype.padend end: createMethod(true) }; /***/ }, /***/ "./node_modules/core-js/internals/string-repeat.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/string-repeat.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsStringRepeatJs(module, exports, __webpack_require__) { "use strict"; var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); // `String.prototype.repeat` method implementation // https://tc39.github.io/ecma262/#sec-string.prototype.repeat module.exports = ''.repeat || function repeat(count) { var str = String(requireObjectCoercible(this)); var result = ''; var n = toInteger(count); if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions'); for (; n > 0; (n >>>= 1) && (str += str)) { if (n & 1) result += str; } return result; }; /***/ }, /***/ "./node_modules/core-js/internals/string-trim.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/string-trim.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsStringTrimJs(module, exports, __webpack_require__) { var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var whitespaces = __webpack_require__( /*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js"); var whitespace = '[' + whitespaces + ']'; var ltrim = RegExp('^' + whitespace + whitespace + '*'); var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation var createMethod = function createMethod(TYPE) { return function ($this) { var string = String(requireObjectCoercible($this)); if (TYPE & 1) string = string.replace(ltrim, ''); if (TYPE & 2) string = string.replace(rtrim, ''); return string; }; }; module.exports = { // `String.prototype.{ trimLeft, trimStart }` methods // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart start: createMethod(1), // `String.prototype.{ trimRight, trimEnd }` methods // https://tc39.github.io/ecma262/#sec-string.prototype.trimend end: createMethod(2), // `String.prototype.trim` method // https://tc39.github.io/ecma262/#sec-string.prototype.trim trim: createMethod(3) }; /***/ }, /***/ "./node_modules/core-js/internals/task.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/task.js ***! \************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsTaskJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var bind = __webpack_require__( /*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js"); var html = __webpack_require__( /*! ../internals/html */ "./node_modules/core-js/internals/html.js"); var createElement = __webpack_require__( /*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js"); var location = global.location; var set = global.setImmediate; var clear = global.clearImmediate; var process = global.process; var MessageChannel = global.MessageChannel; var Dispatch = global.Dispatch; var counter = 0; var queue = {}; var ONREADYSTATECHANGE = 'onreadystatechange'; var defer, channel, port; var run = function run(id) { // eslint-disable-next-line no-prototype-builtins if (queue.hasOwnProperty(id)) { var fn = queue[id]; delete queue[id]; fn(); } }; var runner = function runner(id) { return function () { run(id); }; }; var listener = function listener(event) { run(event.data); }; var post = function post(id) { // old engines have not location.origin global.postMessage(id + '', location.protocol + '//' + location.host); }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: if (!set || !clear) { set = function setImmediate(fn) { var args = []; var i = 1; while (arguments.length > i) { args.push(arguments[i++]); } queue[++counter] = function () { // eslint-disable-next-line no-new-func (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); }; defer(counter); return counter; }; clear = function clearImmediate(id) { delete queue[id]; }; // Node.js 0.8- if (classof(process) == 'process') { defer = function defer(id) { process.nextTick(runner(id)); }; // Sphere (JS game engine) Dispatch API } else if (Dispatch && Dispatch.now) { defer = function defer(id) { Dispatch.now(runner(id)); }; // Browsers with MessageChannel, includes WebWorkers } else if (MessageChannel) { channel = new MessageChannel(); port = channel.port2; channel.port1.onmessage = listener; defer = bind(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post)) { defer = post; global.addEventListener('message', listener, false); // IE8- } else if (ONREADYSTATECHANGE in createElement('script')) { defer = function defer(id) { html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { html.removeChild(this); run(id); }; }; // Rest old browsers } else { defer = function defer(id) { setTimeout(runner(id), 0); }; } } module.exports = { set: set, clear: clear }; /***/ }, /***/ "./node_modules/core-js/internals/this-number-value.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/this-number-value.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsThisNumberValueJs(module, exports, __webpack_require__) { var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); // `thisNumberValue` abstract operation // https://tc39.github.io/ecma262/#sec-thisnumbervalue module.exports = function (value) { if (typeof value != 'number' && classof(value) != 'Number') { throw TypeError('Incorrect invocation'); } return +value; }; /***/ }, /***/ "./node_modules/core-js/internals/to-absolute-index.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/to-absolute-index.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsToAbsoluteIndexJs(module, exports, __webpack_require__) { var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var max = Math.max; var min = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). module.exports = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min(integer, length); }; /***/ }, /***/ "./node_modules/core-js/internals/to-indexed-object.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/to-indexed-object.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsToIndexedObjectJs(module, exports, __webpack_require__) { // toObject with fallback for non-array-like ES3 strings var IndexedObject = __webpack_require__( /*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); module.exports = function (it) { return IndexedObject(requireObjectCoercible(it)); }; /***/ }, /***/ "./node_modules/core-js/internals/to-integer.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/to-integer.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsToIntegerJs(module, exports) { var ceil = Math.ceil; var floor = Math.floor; // `ToInteger` abstract operation // https://tc39.github.io/ecma262/#sec-tointeger module.exports = function (argument) { return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); }; /***/ }, /***/ "./node_modules/core-js/internals/to-length.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/to-length.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsToLengthJs(module, exports, __webpack_require__) { var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var min = Math.min; // `ToLength` abstract operation // https://tc39.github.io/ecma262/#sec-tolength module.exports = function (argument) { return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; /***/ }, /***/ "./node_modules/core-js/internals/to-object.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/internals/to-object.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsToObjectJs(module, exports, __webpack_require__) { var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); // `ToObject` abstract operation // https://tc39.github.io/ecma262/#sec-toobject module.exports = function (argument) { return Object(requireObjectCoercible(argument)); }; /***/ }, /***/ "./node_modules/core-js/internals/to-primitive.js": /*!********************************************************!*\ !*** ./node_modules/core-js/internals/to-primitive.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsToPrimitiveJs(module, exports, __webpack_require__) { var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); // `ToPrimitive` abstract operation // https://tc39.github.io/ecma262/#sec-toprimitive // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (input, PREFERRED_STRING) { if (!isObject(input)) return input; var fn, val; if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }, /***/ "./node_modules/core-js/internals/uid.js": /*!***********************************************!*\ !*** ./node_modules/core-js/internals/uid.js ***! \***********************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsUidJs(module, exports) { var id = 0; var postfix = Math.random(); module.exports = function (key) { return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; /***/ }, /***/ "./node_modules/core-js/internals/user-agent.js": /*!******************************************************!*\ !*** ./node_modules/core-js/internals/user-agent.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsUserAgentJs(module, exports, __webpack_require__) { var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); module.exports = getBuiltIn('navigator', 'userAgent') || ''; /***/ }, /***/ "./node_modules/core-js/internals/well-known-symbol.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/internals/well-known-symbol.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsWellKnownSymbolJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var shared = __webpack_require__( /*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var uid = __webpack_require__( /*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var NATIVE_SYMBOL = __webpack_require__( /*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); var Symbol = global.Symbol; var store = shared('wks'); module.exports = function (name) { return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; /***/ }, /***/ "./node_modules/core-js/internals/whitespaces.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/whitespaces.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsWhitespacesJs(module, exports) { // a string of all valid unicode whitespaces // eslint-disable-next-line max-len module.exports = "\t\n\x0B\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"; /***/ }, /***/ "./node_modules/core-js/internals/wrapped-well-known-symbol.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/internals/wrapped-well-known-symbol.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsInternalsWrappedWellKnownSymbolJs(module, exports, __webpack_require__) { exports.f = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); /***/ }, /***/ "./node_modules/core-js/modules/es.array.concat.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.concat.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayConcatJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var isArray = __webpack_require__( /*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var createProperty = __webpack_require__( /*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); var arraySpeciesCreate = __webpack_require__( /*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); var arrayMethodHasSpeciesSupport = __webpack_require__( /*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; var IS_CONCAT_SPREADABLE_SUPPORT = !fails(function () { var array = []; array[IS_CONCAT_SPREADABLE] = false; return array.concat()[0] !== array; }); var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); var isConcatSpreadable = function isConcatSpreadable(O) { if (!isObject(O)) return false; var spreadable = O[IS_CONCAT_SPREADABLE]; return spreadable !== undefined ? !!spreadable : isArray(O); }; var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method // https://tc39.github.io/ecma262/#sec-array.prototype.concat // with adding support of @@isConcatSpreadable and @@species $({ target: 'Array', proto: true, forced: FORCED }, { concat: function concat(arg) { // eslint-disable-line no-unused-vars var O = toObject(this); var A = arraySpeciesCreate(O, 0); var n = 0; var i, k, length, len, E; for (i = -1, length = arguments.length; i < length; i++) { E = i === -1 ? O : arguments[i]; if (isConcatSpreadable(E)) { len = toLength(E.length); if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); for (k = 0; k < len; k++, n++) { if (k in E) createProperty(A, n, E[k]); } } else { if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); createProperty(A, n++, E); } } A.length = n; return A; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.copy-within.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/modules/es.array.copy-within.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayCopyWithinJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var copyWithin = __webpack_require__( /*! ../internals/array-copy-within */ "./node_modules/core-js/internals/array-copy-within.js"); var addToUnscopables = __webpack_require__( /*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); // `Array.prototype.copyWithin` method // https://tc39.github.io/ecma262/#sec-array.prototype.copywithin $({ target: 'Array', proto: true }, { copyWithin: copyWithin }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('copyWithin'); /***/ }, /***/ "./node_modules/core-js/modules/es.array.every.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.every.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayEveryJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $every = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").every; var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every $({ target: 'Array', proto: true, forced: sloppyArrayMethod('every') }, { every: function every(callbackfn /* , thisArg */ ) { return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.fill.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.fill.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayFillJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fill = __webpack_require__( /*! ../internals/array-fill */ "./node_modules/core-js/internals/array-fill.js"); var addToUnscopables = __webpack_require__( /*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); // `Array.prototype.fill` method // https://tc39.github.io/ecma262/#sec-array.prototype.fill $({ target: 'Array', proto: true }, { fill: fill }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('fill'); /***/ }, /***/ "./node_modules/core-js/modules/es.array.filter.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.filter.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayFilterJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $filter = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").filter; var arrayMethodHasSpeciesSupport = __webpack_require__( /*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter // with adding support of @@species $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, { filter: function filter(callbackfn /* , thisArg */ ) { return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.find-index.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.array.find-index.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayFindIndexJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $findIndex = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").findIndex; var addToUnscopables = __webpack_require__( /*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); var FIND_INDEX = 'findIndex'; var SKIPS_HOLES = true; // Shouldn't skip holes if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; }); // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findindex $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { findIndex: function findIndex(callbackfn /* , that = undefined */ ) { return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND_INDEX); /***/ }, /***/ "./node_modules/core-js/modules/es.array.find.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.find.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayFindJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $find = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find; var addToUnscopables = __webpack_require__( /*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); var FIND = 'find'; var SKIPS_HOLES = true; // Shouldn't skip holes if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, { find: function find(callbackfn /* , that = undefined */ ) { return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND); /***/ }, /***/ "./node_modules/core-js/modules/es.array.for-each.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.for-each.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayForEachJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var forEach = __webpack_require__( /*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach $({ target: 'Array', proto: true, forced: [].forEach != forEach }, { forEach: forEach }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.from.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.from.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayFromJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var from = __webpack_require__( /*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js"); var checkCorrectnessOfIteration = __webpack_require__( /*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { Array.from(iterable); }); // `Array.from` method // https://tc39.github.io/ecma262/#sec-array.from $({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { from: from }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.index-of.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.index-of.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayIndexOfJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $indexOf = __webpack_require__( /*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf; var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); var nativeIndexOf = [].indexOf; var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; var SLOPPY_METHOD = sloppyArrayMethod('indexOf'); // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof $({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, { indexOf: function indexOf(searchElement /* , fromIndex = 0 */ ) { return NEGATIVE_ZERO // convert -0 to +0 ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.is-array.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.is-array.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayIsArrayJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isArray = __webpack_require__( /*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); // `Array.isArray` method // https://tc39.github.io/ecma262/#sec-array.isarray $({ target: 'Array', stat: true }, { isArray: isArray }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.iterator.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.iterator.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayIteratorJs(module, exports, __webpack_require__) { "use strict"; var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var addToUnscopables = __webpack_require__( /*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js"); var Iterators = __webpack_require__( /*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js"); var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var defineIterator = __webpack_require__( /*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); var ARRAY_ITERATOR = 'Array Iterator'; var setInternalState = InternalStateModule.set; var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method // https://tc39.github.io/ecma262/#sec-array.prototype.entries // `Array.prototype.keys` method // https://tc39.github.io/ecma262/#sec-array.prototype.keys // `Array.prototype.values` method // https://tc39.github.io/ecma262/#sec-array.prototype.values // `Array.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator // `CreateArrayIterator` internal method // https://tc39.github.io/ecma262/#sec-createarrayiterator module.exports = defineIterator(Array, 'Array', function (iterated, kind) { setInternalState(this, { type: ARRAY_ITERATOR, target: toIndexedObject(iterated), // target index: 0, // next index kind: kind // kind }); // `%ArrayIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next }, function () { var state = getInternalState(this); var target = state.target; var kind = state.kind; var index = state.index++; if (!target || index >= target.length) { state.target = undefined; return { value: undefined, done: true }; } if (kind == 'keys') return { value: index, done: false }; if (kind == 'values') return { value: target[index], done: false }; return { value: [index, target[index]], done: false }; }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% // https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject // https://tc39.github.io/ecma262/#sec-createmappedargumentsobject Iterators.Arguments = Iterators.Array; // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); /***/ }, /***/ "./node_modules/core-js/modules/es.array.join.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.join.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayJoinJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var IndexedObject = __webpack_require__( /*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); var nativeJoin = [].join; var ES3_STRINGS = IndexedObject != Object; var SLOPPY_METHOD = sloppyArrayMethod('join', ','); // `Array.prototype.join` method // https://tc39.github.io/ecma262/#sec-array.prototype.join $({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, { join: function join(separator) { return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.last-index-of.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/modules/es.array.last-index-of.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayLastIndexOfJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var lastIndexOf = __webpack_require__( /*! ../internals/array-last-index-of */ "./node_modules/core-js/internals/array-last-index-of.js"); // `Array.prototype.lastIndexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof $({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, { lastIndexOf: lastIndexOf }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.map.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.map.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayMapJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $map = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").map; var arrayMethodHasSpeciesSupport = __webpack_require__( /*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map // with adding support of @@species $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, { map: function map(callbackfn /* , thisArg */ ) { return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.of.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/modules/es.array.of.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayOfJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var createProperty = __webpack_require__( /*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); var ISNT_GENERIC = fails(function () { function F() { /* empty */ } return !(Array.of.call(F) instanceof F); }); // `Array.of` method // https://tc39.github.io/ecma262/#sec-array.of // WebKit Array.of isn't generic $({ target: 'Array', stat: true, forced: ISNT_GENERIC }, { of: function of() /* ...args */ { var index = 0; var argumentsLength = arguments.length; var result = new (typeof this == 'function' ? this : Array)(argumentsLength); while (argumentsLength > index) { createProperty(result, index, arguments[index++]); } result.length = argumentsLength; return result; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.reduce-right.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.array.reduce-right.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayReduceRightJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $reduceRight = __webpack_require__( /*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").right; var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); // `Array.prototype.reduceRight` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright $({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduceRight') }, { reduceRight: function reduceRight(callbackfn /* , initialValue */ ) { return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.reduce.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.reduce.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArrayReduceJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $reduce = __webpack_require__( /*! ../internals/array-reduce */ "./node_modules/core-js/internals/array-reduce.js").left; var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); // `Array.prototype.reduce` method // https://tc39.github.io/ecma262/#sec-array.prototype.reduce $({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, { reduce: function reduce(callbackfn /* , initialValue */ ) { return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.slice.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.slice.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArraySliceJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var isArray = __webpack_require__( /*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); var toAbsoluteIndex = __webpack_require__( /*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var createProperty = __webpack_require__( /*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); var arrayMethodHasSpeciesSupport = __webpack_require__( /*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var SPECIES = wellKnownSymbol('species'); var nativeSlice = [].slice; var max = Math.max; // `Array.prototype.slice` method // https://tc39.github.io/ecma262/#sec-array.prototype.slice // fallback for not array-like ES3 strings and DOM objects $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, { slice: function slice(start, end) { var O = toIndexedObject(this); var length = toLength(O.length); var k = toAbsoluteIndex(start, length); var fin = toAbsoluteIndex(end === undefined ? length : end, length); // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible var Constructor, result, n; if (isArray(O)) { Constructor = O.constructor; // cross-realm fallback if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { Constructor = undefined; } else if (isObject(Constructor)) { Constructor = Constructor[SPECIES]; if (Constructor === null) Constructor = undefined; } if (Constructor === Array || Constructor === undefined) { return nativeSlice.call(O, k, fin); } } result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); for (n = 0; k < fin; k++, n++) { if (k in O) createProperty(result, n, O[k]); } result.length = n; return result; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.some.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.some.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArraySomeJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $some = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").some; var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some $({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, { some: function some(callbackfn /* , thisArg */ ) { return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.sort.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.array.sort.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArraySortJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var sloppyArrayMethod = __webpack_require__( /*! ../internals/sloppy-array-method */ "./node_modules/core-js/internals/sloppy-array-method.js"); var nativeSort = [].sort; var test = [1, 2, 3]; // IE8- var FAILS_ON_UNDEFINED = fails(function () { test.sort(undefined); }); // V8 bug var FAILS_ON_NULL = fails(function () { test.sort(null); }); // Old WebKit var SLOPPY_METHOD = sloppyArrayMethod('sort'); var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD; // `Array.prototype.sort` method // https://tc39.github.io/ecma262/#sec-array.prototype.sort $({ target: 'Array', proto: true, forced: FORCED }, { sort: function sort(comparefn) { return comparefn === undefined ? nativeSort.call(toObject(this)) : nativeSort.call(toObject(this), aFunction(comparefn)); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.array.splice.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.splice.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsArraySpliceJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toAbsoluteIndex = __webpack_require__( /*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var arraySpeciesCreate = __webpack_require__( /*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js"); var createProperty = __webpack_require__( /*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js"); var arrayMethodHasSpeciesSupport = __webpack_require__( /*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js"); var max = Math.max; var min = Math.min; var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; // `Array.prototype.splice` method // https://tc39.github.io/ecma262/#sec-array.prototype.splice // with adding support of @@species $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, { splice: function splice(start, deleteCount /* , ...items */ ) { var O = toObject(this); var len = toLength(O.length); var actualStart = toAbsoluteIndex(start, len); var argumentsLength = arguments.length; var insertCount, actualDeleteCount, A, k, from, to; if (argumentsLength === 0) { insertCount = actualDeleteCount = 0; } else if (argumentsLength === 1) { insertCount = 0; actualDeleteCount = len - actualStart; } else { insertCount = argumentsLength - 2; actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); } if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); } A = arraySpeciesCreate(O, actualDeleteCount); for (k = 0; k < actualDeleteCount; k++) { from = actualStart + k; if (from in O) createProperty(A, k, O[from]); } A.length = actualDeleteCount; if (insertCount < actualDeleteCount) { for (k = actualStart; k < len - actualDeleteCount; k++) { from = k + actualDeleteCount; to = k + insertCount; if (from in O) O[to] = O[from];else delete O[to]; } for (k = len; k > len - actualDeleteCount + insertCount; k--) { delete O[k - 1]; } } else if (insertCount > actualDeleteCount) { for (k = len - actualDeleteCount; k > actualStart; k--) { from = k + actualDeleteCount - 1; to = k + insertCount - 1; if (from in O) O[to] = O[from];else delete O[to]; } } for (k = 0; k < insertCount; k++) { O[k + actualStart] = arguments[k + 2]; } O.length = len - actualDeleteCount + insertCount; return A; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.date.now.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/modules/es.date.now.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsDateNowJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // `Date.now` method // https://tc39.github.io/ecma262/#sec-date.now $({ target: 'Date', stat: true }, { now: function now() { return new Date().getTime(); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.date.to-iso-string.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.date.to-iso-string.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsDateToIsoStringJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toISOString = __webpack_require__( /*! ../internals/date-to-iso-string */ "./node_modules/core-js/internals/date-to-iso-string.js"); // `Date.prototype.toISOString` method // https://tc39.github.io/ecma262/#sec-date.prototype.toisostring // PhantomJS / old WebKit has a broken implementations $({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, { toISOString: toISOString }); /***/ }, /***/ "./node_modules/core-js/modules/es.date.to-json.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.date.to-json.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsDateToJsonJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var FORCED = fails(function () { return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({ toISOString: function toISOString() { return 1; } }) !== 1; }); // `Date.prototype.toJSON` method // https://tc39.github.io/ecma262/#sec-date.prototype.tojson $({ target: 'Date', proto: true, forced: FORCED }, { // eslint-disable-next-line no-unused-vars toJSON: function toJSON(key) { var O = toObject(this); var pv = toPrimitive(O); return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.date.to-primitive.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/modules/es.date.to-primitive.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsDateToPrimitiveJs(module, exports, __webpack_require__) { var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var dateToPrimitive = __webpack_require__( /*! ../internals/date-to-primitive */ "./node_modules/core-js/internals/date-to-primitive.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); var DatePrototype = Date.prototype; // `Date.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-date.prototype-@@toprimitive if (!(TO_PRIMITIVE in DatePrototype)) hide(DatePrototype, TO_PRIMITIVE, dateToPrimitive); /***/ }, /***/ "./node_modules/core-js/modules/es.date.to-string.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.date.to-string.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsDateToStringJs(module, exports, __webpack_require__) { var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var DatePrototype = Date.prototype; var INVALID_DATE = 'Invalid Date'; var TO_STRING = 'toString'; var nativeDateToString = DatePrototype[TO_STRING]; var getTime = DatePrototype.getTime; // `Date.prototype.toString` method // https://tc39.github.io/ecma262/#sec-date.prototype.tostring if (new Date(NaN) + '' != INVALID_DATE) { redefine(DatePrototype, TO_STRING, function toString() { var value = getTime.call(this); // eslint-disable-next-line no-self-compare return value === value ? nativeDateToString.call(this) : INVALID_DATE; }); } /***/ }, /***/ "./node_modules/core-js/modules/es.function.bind.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.function.bind.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsFunctionBindJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var bind = __webpack_require__( /*! ../internals/function-bind */ "./node_modules/core-js/internals/function-bind.js"); // `Function.prototype.bind` method // https://tc39.github.io/ecma262/#sec-function.prototype.bind $({ target: 'Function', proto: true }, { bind: bind }); /***/ }, /***/ "./node_modules/core-js/modules/es.function.has-instance.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/modules/es.function.has-instance.js ***! \******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsFunctionHasInstanceJs(module, exports, __webpack_require__) { "use strict"; var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var HAS_INSTANCE = wellKnownSymbol('hasInstance'); var FunctionPrototype = Function.prototype; // `Function.prototype[@@hasInstance]` method // https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance if (!(HAS_INSTANCE in FunctionPrototype)) { definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: function value(O) { if (typeof this != 'function' || !isObject(O)) return false; if (!isObject(this.prototype)) return O instanceof this; // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: while (O = getPrototypeOf(O)) { if (this.prototype === O) return true; } return false; } }); } /***/ }, /***/ "./node_modules/core-js/modules/es.function.name.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.function.name.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsFunctionNameJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var FunctionPrototype = Function.prototype; var FunctionPrototypeToString = FunctionPrototype.toString; var nameRE = /^\s*function ([^ (]*)/; var NAME = 'name'; // Function instances `.name` property // https://tc39.github.io/ecma262/#sec-function-instances-name if (DESCRIPTORS && !(NAME in FunctionPrototype)) { defineProperty(FunctionPrototype, NAME, { configurable: true, get: function get() { try { return FunctionPrototypeToString.call(this).match(nameRE)[1]; } catch (error) { return ''; } } }); } /***/ }, /***/ "./node_modules/core-js/modules/es.json.to-string-tag.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.json.to-string-tag.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsJsonToStringTagJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); // JSON[@@toStringTag] property // https://tc39.github.io/ecma262/#sec-json-@@tostringtag setToStringTag(global.JSON, 'JSON', true); /***/ }, /***/ "./node_modules/core-js/modules/es.map.js": /*!************************************************!*\ !*** ./node_modules/core-js/modules/es.map.js ***! \************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMapJs(module, exports, __webpack_require__) { "use strict"; var collection = __webpack_require__( /*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); var collectionStrong = __webpack_require__( /*! ../internals/collection-strong */ "./node_modules/core-js/internals/collection-strong.js"); // `Map` constructor // https://tc39.github.io/ecma262/#sec-map-objects module.exports = collection('Map', function (get) { return function Map() { return get(this, arguments.length ? arguments[0] : undefined); }; }, collectionStrong, true); /***/ }, /***/ "./node_modules/core-js/modules/es.math.acosh.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.acosh.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathAcoshJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var log1p = __webpack_require__( /*! ../internals/math-log1p */ "./node_modules/core-js/internals/math-log1p.js"); var nativeAcosh = Math.acosh; var log = Math.log; var sqrt = Math.sqrt; var LN2 = Math.LN2; var FORCED = !nativeAcosh // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 // Tor Browser bug: Math.acosh(Infinity) -> NaN || nativeAcosh(Infinity) != Infinity; // `Math.acosh` method // https://tc39.github.io/ecma262/#sec-math.acosh $({ target: 'Math', stat: true, forced: FORCED }, { acosh: function acosh(x) { return (x = +x) < 1 ? NaN : x > 94906265.62425156 ? log(x) + LN2 : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.asinh.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.asinh.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathAsinhJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var nativeAsinh = Math.asinh; var log = Math.log; var sqrt = Math.sqrt; function asinh(x) { return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1)); } // `Math.asinh` method // https://tc39.github.io/ecma262/#sec-math.asinh // Tor Browser bug: Math.asinh(0) -> -0 $({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, { asinh: asinh }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.atanh.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.atanh.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathAtanhJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var nativeAtanh = Math.atanh; var log = Math.log; // `Math.atanh` method // https://tc39.github.io/ecma262/#sec-math.atanh // Tor Browser bug: Math.atanh(-0) -> 0 $({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, { atanh: function atanh(x) { return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.cbrt.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.cbrt.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathCbrtJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var sign = __webpack_require__( /*! ../internals/math-sign */ "./node_modules/core-js/internals/math-sign.js"); var abs = Math.abs; var pow = Math.pow; // `Math.cbrt` method // https://tc39.github.io/ecma262/#sec-math.cbrt $({ target: 'Math', stat: true }, { cbrt: function cbrt(x) { return sign(x = +x) * pow(abs(x), 1 / 3); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.clz32.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.clz32.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathClz32Js(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var floor = Math.floor; var log = Math.log; var LOG2E = Math.LOG2E; // `Math.clz32` method // https://tc39.github.io/ecma262/#sec-math.clz32 $({ target: 'Math', stat: true }, { clz32: function clz32(x) { return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.cosh.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.cosh.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathCoshJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var expm1 = __webpack_require__( /*! ../internals/math-expm1 */ "./node_modules/core-js/internals/math-expm1.js"); var nativeCosh = Math.cosh; var abs = Math.abs; var E = Math.E; // `Math.cosh` method // https://tc39.github.io/ecma262/#sec-math.cosh $({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, { cosh: function cosh(x) { var t = expm1(abs(x) - 1) + 1; return (t + 1 / (t * E * E)) * (E / 2); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.expm1.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.expm1.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathExpm1Js(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var expm1 = __webpack_require__( /*! ../internals/math-expm1 */ "./node_modules/core-js/internals/math-expm1.js"); // `Math.expm1` method // https://tc39.github.io/ecma262/#sec-math.expm1 $({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.fround.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.math.fround.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathFroundJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fround = __webpack_require__( /*! ../internals/math-fround */ "./node_modules/core-js/internals/math-fround.js"); // `Math.fround` method // https://tc39.github.io/ecma262/#sec-math.fround $({ target: 'Math', stat: true }, { fround: fround }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.hypot.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.hypot.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathHypotJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $hypot = Math.hypot; var abs = Math.abs; var sqrt = Math.sqrt; // Chrome 77 bug // https://bugs.chromium.org/p/v8/issues/detail?id=9546 var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; // `Math.hypot` method // https://tc39.github.io/ecma262/#sec-math.hypot $({ target: 'Math', stat: true, forced: BUGGY }, { hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars var sum = 0; var i = 0; var aLen = arguments.length; var larg = 0; var arg, div; while (i < aLen) { arg = abs(arguments[i++]); if (larg < arg) { div = larg / arg; sum = sum * div * div + 1; larg = arg; } else if (arg > 0) { div = arg / larg; sum += div * div; } else sum += arg; } return larg === Infinity ? Infinity : larg * sqrt(sum); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.imul.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.imul.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathImulJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativeImul = Math.imul; var FORCED = fails(function () { return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; }); // `Math.imul` method // https://tc39.github.io/ecma262/#sec-math.imul // some WebKit versions fails with big numbers, some has wrong arity $({ target: 'Math', stat: true, forced: FORCED }, { imul: function imul(x, y) { var UINT16 = 0xFFFF; var xn = +x; var yn = +y; var xl = UINT16 & xn; var yl = UINT16 & yn; return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.log10.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.log10.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathLog10Js(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var log = Math.log; var LOG10E = Math.LOG10E; // `Math.log10` method // https://tc39.github.io/ecma262/#sec-math.log10 $({ target: 'Math', stat: true }, { log10: function log10(x) { return log(x) * LOG10E; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.log1p.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.log1p.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathLog1pJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var log1p = __webpack_require__( /*! ../internals/math-log1p */ "./node_modules/core-js/internals/math-log1p.js"); // `Math.log1p` method // https://tc39.github.io/ecma262/#sec-math.log1p $({ target: 'Math', stat: true }, { log1p: log1p }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.log2.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.log2.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathLog2Js(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var log = Math.log; var LN2 = Math.LN2; // `Math.log2` method // https://tc39.github.io/ecma262/#sec-math.log2 $({ target: 'Math', stat: true }, { log2: function log2(x) { return log(x) / LN2; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.sign.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.sign.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathSignJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var sign = __webpack_require__( /*! ../internals/math-sign */ "./node_modules/core-js/internals/math-sign.js"); // `Math.sign` method // https://tc39.github.io/ecma262/#sec-math.sign $({ target: 'Math', stat: true }, { sign: sign }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.sinh.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.sinh.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathSinhJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var expm1 = __webpack_require__( /*! ../internals/math-expm1 */ "./node_modules/core-js/internals/math-expm1.js"); var abs = Math.abs; var exp = Math.exp; var E = Math.E; var FORCED = fails(function () { return Math.sinh(-2e-17) != -2e-17; }); // `Math.sinh` method // https://tc39.github.io/ecma262/#sec-math.sinh // V8 near Chromium 38 has a problem with very small numbers $({ target: 'Math', stat: true, forced: FORCED }, { sinh: function sinh(x) { return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.tanh.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.tanh.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathTanhJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var expm1 = __webpack_require__( /*! ../internals/math-expm1 */ "./node_modules/core-js/internals/math-expm1.js"); var exp = Math.exp; // `Math.tanh` method // https://tc39.github.io/ecma262/#sec-math.tanh $({ target: 'Math', stat: true }, { tanh: function tanh(x) { var a = expm1(x = +x); var b = expm1(-x); return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.math.to-string-tag.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.math.to-string-tag.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathToStringTagJs(module, exports, __webpack_require__) { var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); // Math[@@toStringTag] property // https://tc39.github.io/ecma262/#sec-math-@@tostringtag setToStringTag(Math, 'Math', true); /***/ }, /***/ "./node_modules/core-js/modules/es.math.trunc.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.math.trunc.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsMathTruncJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ceil = Math.ceil; var floor = Math.floor; // `Math.trunc` method // https://tc39.github.io/ecma262/#sec-math.trunc $({ target: 'Math', stat: true }, { trunc: function trunc(it) { return (it > 0 ? floor : ceil)(it); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.constructor.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.constructor.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberConstructorJs(module, exports, __webpack_require__) { "use strict"; var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isForced = __webpack_require__( /*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var inheritIfRequired = __webpack_require__( /*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var create = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var getOwnPropertyNames = __webpack_require__( /*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f; var getOwnPropertyDescriptor = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var trim = __webpack_require__( /*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim; var NUMBER = 'Number'; var NativeNumber = global[NUMBER]; var NumberPrototype = NativeNumber.prototype; // Opera ~12 has broken Object#toString var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER; // `ToNumber` abstract operation // https://tc39.github.io/ecma262/#sec-tonumber var toNumber = function toNumber(argument) { var it = toPrimitive(argument, false); var first, third, radix, maxCode, digits, length, index, code; if (typeof it == 'string' && it.length > 2) { it = trim(it); first = it.charCodeAt(0); if (first === 43 || first === 45) { third = it.charCodeAt(2); if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix } else if (first === 48) { switch (it.charCodeAt(1)) { case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i default: return +it; } digits = it.slice(2); length = digits.length; for (index = 0; index < length; index++) { code = digits.charCodeAt(index); // parseInt parses a string to a first unavailable symbol // but ToNumber should return NaN if a string contains unavailable symbols if (code < 48 || code > maxCode) return NaN; } return parseInt(digits, radix); } } return +it; }; // `Number` constructor // https://tc39.github.io/ecma262/#sec-number-constructor if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) { var NumberWrapper = function Number(value) { var it = arguments.length < 1 ? 0 : value; var dummy = this; return dummy instanceof NumberWrapper // check on 1..constructor(foo) case && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER) ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it); }; for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : ( // ES3: 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + // ES2015 (in case, if modules with ES2015 Number statics required before): 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger').split(','), j = 0, key; keys.length > j; j++) { if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) { defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key)); } } NumberWrapper.prototype = NumberPrototype; NumberPrototype.constructor = NumberWrapper; redefine(global, NUMBER, NumberWrapper); } /***/ }, /***/ "./node_modules/core-js/modules/es.number.epsilon.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.number.epsilon.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberEpsilonJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // `Number.EPSILON` constant // https://tc39.github.io/ecma262/#sec-number.epsilon $({ target: 'Number', stat: true }, { EPSILON: Math.pow(2, -52) }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.is-finite.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.is-finite.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberIsFiniteJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var numberIsFinite = __webpack_require__( /*! ../internals/number-is-finite */ "./node_modules/core-js/internals/number-is-finite.js"); // `Number.isFinite` method // https://tc39.github.io/ecma262/#sec-number.isfinite $({ target: 'Number', stat: true }, { isFinite: numberIsFinite }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.is-integer.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.is-integer.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberIsIntegerJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isInteger = __webpack_require__( /*! ../internals/is-integer */ "./node_modules/core-js/internals/is-integer.js"); // `Number.isInteger` method // https://tc39.github.io/ecma262/#sec-number.isinteger $({ target: 'Number', stat: true }, { isInteger: isInteger }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.is-nan.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.number.is-nan.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberIsNanJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // `Number.isNaN` method // https://tc39.github.io/ecma262/#sec-number.isnan $({ target: 'Number', stat: true }, { isNaN: function isNaN(number) { // eslint-disable-next-line no-self-compare return number != number; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.is-safe-integer.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.is-safe-integer.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberIsSafeIntegerJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isInteger = __webpack_require__( /*! ../internals/is-integer */ "./node_modules/core-js/internals/is-integer.js"); var abs = Math.abs; // `Number.isSafeInteger` method // https://tc39.github.io/ecma262/#sec-number.issafeinteger $({ target: 'Number', stat: true }, { isSafeInteger: function isSafeInteger(number) { return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.max-safe-integer.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.max-safe-integer.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberMaxSafeIntegerJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // `Number.MAX_SAFE_INTEGER` constant // https://tc39.github.io/ecma262/#sec-number.max_safe_integer $({ target: 'Number', stat: true }, { MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.min-safe-integer.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.min-safe-integer.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberMinSafeIntegerJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // `Number.MIN_SAFE_INTEGER` constant // https://tc39.github.io/ecma262/#sec-number.min_safe_integer $({ target: 'Number', stat: true }, { MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.parse-float.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.parse-float.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberParseFloatJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var parseFloat = __webpack_require__( /*! ../internals/parse-float */ "./node_modules/core-js/internals/parse-float.js"); // `Number.parseFloat` method // https://tc39.github.io/ecma262/#sec-number.parseFloat $({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, { parseFloat: parseFloat }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.parse-int.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.parse-int.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberParseIntJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var parseInt = __webpack_require__( /*! ../internals/parse-int */ "./node_modules/core-js/internals/parse-int.js"); // `Number.parseInt` method // https://tc39.github.io/ecma262/#sec-number.parseint $({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, { parseInt: parseInt }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.to-fixed.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.to-fixed.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberToFixedJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var thisNumberValue = __webpack_require__( /*! ../internals/this-number-value */ "./node_modules/core-js/internals/this-number-value.js"); var repeat = __webpack_require__( /*! ../internals/string-repeat */ "./node_modules/core-js/internals/string-repeat.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativeToFixed = 1.0.toFixed; var floor = Math.floor; var pow = function pow(x, n, acc) { return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); }; var log = function log(x) { var n = 0; var x2 = x; while (x2 >= 4096) { n += 12; x2 /= 4096; } while (x2 >= 2) { n += 1; x2 /= 2; } return n; }; var FORCED = nativeToFixed && (0.00008.toFixed(3) !== '0.000' || 0.9.toFixed(0) !== '1' || 1.255.toFixed(2) !== '1.25' || 1000000000000000128.0.toFixed(0) !== '1000000000000000128') || !fails(function () { // V8 ~ Android 4.3- nativeToFixed.call({}); }); // `Number.prototype.toFixed` method // https://tc39.github.io/ecma262/#sec-number.prototype.tofixed $({ target: 'Number', proto: true, forced: FORCED }, { // eslint-disable-next-line max-statements toFixed: function toFixed(fractionDigits) { var number = thisNumberValue(this); var fractDigits = toInteger(fractionDigits); var data = [0, 0, 0, 0, 0, 0]; var sign = ''; var result = '0'; var e, z, j, k; var multiply = function multiply(n, c) { var index = -1; var c2 = c; while (++index < 6) { c2 += n * data[index]; data[index] = c2 % 1e7; c2 = floor(c2 / 1e7); } }; var divide = function divide(n) { var index = 6; var c = 0; while (--index >= 0) { c += data[index]; data[index] = floor(c / n); c = c % n * 1e7; } }; var dataToString = function dataToString() { var index = 6; var s = ''; while (--index >= 0) { if (s !== '' || index === 0 || data[index] !== 0) { var t = String(data[index]); s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t; } } return s; }; if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); // eslint-disable-next-line no-self-compare if (number != number) return 'NaN'; if (number <= -1e21 || number >= 1e21) return String(number); if (number < 0) { sign = '-'; number = -number; } if (number > 1e-21) { e = log(number * pow(2, 69, 1)) - 69; z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); z *= 0x10000000000000; e = 52 - e; if (e > 0) { multiply(0, z); j = fractDigits; while (j >= 7) { multiply(1e7, 0); j -= 7; } multiply(pow(10, j, 1), 0); j = e - 1; while (j >= 23) { divide(1 << 23); j -= 23; } divide(1 << j); multiply(1, 1); divide(2); result = dataToString(); } else { multiply(0, z); multiply(1 << -e, 0); result = dataToString() + repeat.call('0', fractDigits); } } if (fractDigits > 0) { k = result.length; result = sign + (k <= fractDigits ? '0.' + repeat.call('0', fractDigits - k) + result : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits)); } else { result = sign + result; } return result; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.number.to-precision.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/modules/es.number.to-precision.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsNumberToPrecisionJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var thisNumberValue = __webpack_require__( /*! ../internals/this-number-value */ "./node_modules/core-js/internals/this-number-value.js"); var nativeToPrecision = 1.0.toPrecision; var FORCED = fails(function () { // IE7- return nativeToPrecision.call(1, undefined) !== '1'; }) || !fails(function () { // V8 ~ Android 4.3- nativeToPrecision.call({}); }); // `Number.prototype.toPrecision` method // https://tc39.github.io/ecma262/#sec-number.prototype.toprecision $({ target: 'Number', proto: true, forced: FORCED }, { toPrecision: function toPrecision(precision) { return precision === undefined ? nativeToPrecision.call(thisNumberValue(this)) : nativeToPrecision.call(thisNumberValue(this), precision); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.assign.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.object.assign.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectAssignJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var assign = __webpack_require__( /*! ../internals/object-assign */ "./node_modules/core-js/internals/object-assign.js"); // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign $({ target: 'Object', stat: true, forced: Object.assign !== assign }, { assign: assign }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.create.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.object.create.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectCreateJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var create = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create $({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { create: create }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.define-properties.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.define-properties.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectDefinePropertiesJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var defineProperties = __webpack_require__( /*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js"); // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties $({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, { defineProperties: defineProperties }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.define-property.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.define-property.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectDefinePropertyJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var objectDefinePropertyModile = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty $({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, { defineProperty: objectDefinePropertyModile.f }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.freeze.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.object.freeze.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectFreezeJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var FREEZING = __webpack_require__( /*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var onFreeze = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").onFreeze; var nativeFreeze = Object.freeze; var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); }); // `Object.freeze` method // https://tc39.github.io/ecma262/#sec-object.freeze $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { freeze: function freeze(it) { return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.get-own-property-descriptor.js": /*!*******************************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.get-own-property-descriptor.js ***! \*******************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var nativeGetOwnPropertyDescriptor = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); }); var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor $({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.get-own-property-names.js": /*!**************************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.get-own-property-names.js ***! \**************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectGetOwnPropertyNamesJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativeGetOwnPropertyNames = __webpack_require__( /*! ../internals/object-get-own-property-names-external */ "./node_modules/core-js/internals/object-get-own-property-names-external.js").f; var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); }); // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { getOwnPropertyNames: nativeGetOwnPropertyNames }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.get-prototype-of.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.get-prototype-of.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectGetPrototypeOfJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var nativeGetPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var CORRECT_PROTOTYPE_GETTER = __webpack_require__( /*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); // `Object.getPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.getprototypeof $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { getPrototypeOf: function getPrototypeOf(it) { return nativeGetPrototypeOf(toObject(it)); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.is-extensible.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.is-extensible.js ***! \*****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectIsExtensibleJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var nativeIsExtensible = Object.isExtensible; var FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); }); // `Object.isExtensible` method // https://tc39.github.io/ecma262/#sec-object.isextensible $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { isExtensible: function isExtensible(it) { return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.is-frozen.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.is-frozen.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectIsFrozenJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var nativeIsFrozen = Object.isFrozen; var FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); }); // `Object.isFrozen` method // https://tc39.github.io/ecma262/#sec-object.isfrozen $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { isFrozen: function isFrozen(it) { return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.is-sealed.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.is-sealed.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectIsSealedJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var nativeIsSealed = Object.isSealed; var FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); }); // `Object.isSealed` method // https://tc39.github.io/ecma262/#sec-object.issealed $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { isSealed: function isSealed(it) { return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.is.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.object.is.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectIsJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var is = __webpack_require__( /*! ../internals/same-value */ "./node_modules/core-js/internals/same-value.js"); // `Object.is` method // https://tc39.github.io/ecma262/#sec-object.is $({ target: 'Object', stat: true }, { is: is }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.keys.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.object.keys.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectKeysJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var nativeKeys = __webpack_require__( /*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { keys: function keys(it) { return nativeKeys(toObject(it)); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.prevent-extensions.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.prevent-extensions.js ***! \**********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectPreventExtensionsJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var onFreeze = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").onFreeze; var FREEZING = __webpack_require__( /*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativePreventExtensions = Object.preventExtensions; var FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); }); // `Object.preventExtensions` method // https://tc39.github.io/ecma262/#sec-object.preventextensions $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { preventExtensions: function preventExtensions(it) { return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.seal.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.object.seal.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectSealJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var onFreeze = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js").onFreeze; var FREEZING = __webpack_require__( /*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativeSeal = Object.seal; var FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); }); // `Object.seal` method // https://tc39.github.io/ecma262/#sec-object.seal $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { seal: function seal(it) { return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.set-prototype-of.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.set-prototype-of.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectSetPrototypeOfJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var setPrototypeOf = __webpack_require__( /*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); // `Object.setPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.setprototypeof $({ target: 'Object', stat: true }, { setPrototypeOf: setPrototypeOf }); /***/ }, /***/ "./node_modules/core-js/modules/es.object.to-string.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.object.to-string.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsObjectToStringJs(module, exports, __webpack_require__) { var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var toString = __webpack_require__( /*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js"); var ObjectPrototype = Object.prototype; // `Object.prototype.toString` method // https://tc39.github.io/ecma262/#sec-object.prototype.tostring if (toString !== ObjectPrototype.toString) { redefine(ObjectPrototype, 'toString', toString, { unsafe: true }); } /***/ }, /***/ "./node_modules/core-js/modules/es.parse-float.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.parse-float.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsParseFloatJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var parseFloatImplementation = __webpack_require__( /*! ../internals/parse-float */ "./node_modules/core-js/internals/parse-float.js"); // `parseFloat` method // https://tc39.github.io/ecma262/#sec-parsefloat-string $({ global: true, forced: parseFloat != parseFloatImplementation }, { parseFloat: parseFloatImplementation }); /***/ }, /***/ "./node_modules/core-js/modules/es.parse-int.js": /*!******************************************************!*\ !*** ./node_modules/core-js/modules/es.parse-int.js ***! \******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsParseIntJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var parseIntImplementation = __webpack_require__( /*! ../internals/parse-int */ "./node_modules/core-js/internals/parse-int.js"); // `parseInt` method // https://tc39.github.io/ecma262/#sec-parseint-string-radix $({ global: true, forced: parseInt != parseIntImplementation }, { parseInt: parseIntImplementation }); /***/ }, /***/ "./node_modules/core-js/modules/es.promise.js": /*!****************************************************!*\ !*** ./node_modules/core-js/modules/es.promise.js ***! \****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsPromiseJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var IS_PURE = __webpack_require__( /*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var path = __webpack_require__( /*! ../internals/path */ "./node_modules/core-js/internals/path.js"); var NativePromise = __webpack_require__( /*! ../internals/native-promise-constructor */ "./node_modules/core-js/internals/native-promise-constructor.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var redefineAll = __webpack_require__( /*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var setSpecies = __webpack_require__( /*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var anInstance = __webpack_require__( /*! ../internals/an-instance */ "./node_modules/core-js/internals/an-instance.js"); var classof = __webpack_require__( /*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js"); var iterate = __webpack_require__( /*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var checkCorrectnessOfIteration = __webpack_require__( /*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js"); var speciesConstructor = __webpack_require__( /*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js"); var task = __webpack_require__( /*! ../internals/task */ "./node_modules/core-js/internals/task.js").set; var microtask = __webpack_require__( /*! ../internals/microtask */ "./node_modules/core-js/internals/microtask.js"); var promiseResolve = __webpack_require__( /*! ../internals/promise-resolve */ "./node_modules/core-js/internals/promise-resolve.js"); var hostReportErrors = __webpack_require__( /*! ../internals/host-report-errors */ "./node_modules/core-js/internals/host-report-errors.js"); var newPromiseCapabilityModule = __webpack_require__( /*! ../internals/new-promise-capability */ "./node_modules/core-js/internals/new-promise-capability.js"); var perform = __webpack_require__( /*! ../internals/perform */ "./node_modules/core-js/internals/perform.js"); var userAgent = __webpack_require__( /*! ../internals/user-agent */ "./node_modules/core-js/internals/user-agent.js"); var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var isForced = __webpack_require__( /*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var SPECIES = wellKnownSymbol('species'); var PROMISE = 'Promise'; var getInternalState = InternalStateModule.get; var setInternalState = InternalStateModule.set; var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); var PromiseConstructor = NativePromise; var TypeError = global.TypeError; var document = global.document; var process = global.process; var $fetch = global.fetch; var versions = process && process.versions; var v8 = versions && versions.v8 || ''; var newPromiseCapability = newPromiseCapabilityModule.f; var newGenericPromiseCapability = newPromiseCapability; var IS_NODE = classof(process) == 'process'; var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); var UNHANDLED_REJECTION = 'unhandledrejection'; var REJECTION_HANDLED = 'rejectionhandled'; var PENDING = 0; var FULFILLED = 1; var REJECTED = 2; var HANDLED = 1; var UNHANDLED = 2; var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; var FORCED = isForced(PROMISE, function () { // correct subclassing with @@species support var promise = PromiseConstructor.resolve(1); var empty = function empty() { /* empty */ }; var FakePromise = (promise.constructor = {})[SPECIES] = function (exec) { exec(empty, empty); }; // unhandled rejections tracking support, NodeJS Promise without it fails @@species test return !((IS_NODE || typeof PromiseRejectionEvent == 'function') && (!IS_PURE || promise['finally']) && promise.then(empty) instanceof FakePromise // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 // we can't detect it synchronously, so just check versions && v8.indexOf('6.6') !== 0 && userAgent.indexOf('Chrome/66') === -1); }); var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); }); // helpers var isThenable = function isThenable(it) { var then; return isObject(it) && typeof (then = it.then) == 'function' ? then : false; }; var notify = function notify(promise, state, isReject) { if (state.notified) return; state.notified = true; var chain = state.reactions; microtask(function () { var value = state.value; var ok = state.state == FULFILLED; var index = 0; // variable length - can't use forEach while (chain.length > index) { var reaction = chain[index++]; var handler = ok ? reaction.ok : reaction.fail; var resolve = reaction.resolve; var reject = reaction.reject; var domain = reaction.domain; var result, then, exited; try { if (handler) { if (!ok) { if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); state.rejection = HANDLED; } if (handler === true) result = value;else { if (domain) domain.enter(); result = handler(value); // can throw if (domain) { domain.exit(); exited = true; } } if (result === reaction.promise) { reject(TypeError('Promise-chain cycle')); } else if (then = isThenable(result)) { then.call(result, resolve, reject); } else resolve(result); } else reject(value); } catch (error) { if (domain && !exited) domain.exit(); reject(error); } } state.reactions = []; state.notified = false; if (isReject && !state.rejection) onUnhandled(promise, state); }); }; var dispatchEvent = function dispatchEvent(name, promise, reason) { var event, handler; if (DISPATCH_EVENT) { event = document.createEvent('Event'); event.promise = promise; event.reason = reason; event.initEvent(name, false, true); global.dispatchEvent(event); } else event = { promise: promise, reason: reason }; if (handler = global['on' + name]) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); }; var onUnhandled = function onUnhandled(promise, state) { task.call(global, function () { var value = state.value; var IS_UNHANDLED = isUnhandled(state); var result; if (IS_UNHANDLED) { result = perform(function () { if (IS_NODE) { process.emit('unhandledRejection', value, promise); } else dispatchEvent(UNHANDLED_REJECTION, promise, value); }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; if (result.error) throw result.value; } }); }; var isUnhandled = function isUnhandled(state) { return state.rejection !== HANDLED && !state.parent; }; var onHandleUnhandled = function onHandleUnhandled(promise, state) { task.call(global, function () { if (IS_NODE) { process.emit('rejectionHandled', promise); } else dispatchEvent(REJECTION_HANDLED, promise, state.value); }); }; var bind = function bind(fn, promise, state, unwrap) { return function (value) { fn(promise, state, value, unwrap); }; }; var internalReject = function internalReject(promise, state, value, unwrap) { if (state.done) return; state.done = true; if (unwrap) state = unwrap; state.value = value; state.state = REJECTED; notify(promise, state, true); }; var internalResolve = function internalResolve(promise, state, value, unwrap) { if (state.done) return; state.done = true; if (unwrap) state = unwrap; try { if (promise === value) throw TypeError("Promise can't be resolved itself"); var then = isThenable(value); if (then) { microtask(function () { var wrapper = { done: false }; try { then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state)); } catch (error) { internalReject(promise, wrapper, error, state); } }); } else { state.value = value; state.state = FULFILLED; notify(promise, state, false); } } catch (error) { internalReject(promise, { done: false }, error, state); } }; // constructor polyfill if (FORCED) { // 25.4.3.1 Promise(executor) PromiseConstructor = function Promise(executor) { anInstance(this, PromiseConstructor, PROMISE); aFunction(executor); Internal.call(this); var state = getInternalState(this); try { executor(bind(internalResolve, this, state), bind(internalReject, this, state)); } catch (error) { internalReject(this, state, error); } }; // eslint-disable-next-line no-unused-vars Internal = function Promise(executor) { setInternalState(this, { type: PROMISE, done: false, notified: false, parent: false, reactions: [], rejection: false, state: PENDING, value: undefined }); }; Internal.prototype = redefineAll(PromiseConstructor.prototype, { // `Promise.prototype.then` method // https://tc39.github.io/ecma262/#sec-promise.prototype.then then: function then(onFulfilled, onRejected) { var state = getInternalPromiseState(this); var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; reaction.fail = typeof onRejected == 'function' && onRejected; reaction.domain = IS_NODE ? process.domain : undefined; state.parent = true; state.reactions.push(reaction); if (state.state != PENDING) notify(this, state, false); return reaction.promise; }, // `Promise.prototype.catch` method // https://tc39.github.io/ecma262/#sec-promise.prototype.catch 'catch': function _catch(onRejected) { return this.then(undefined, onRejected); } }); OwnPromiseCapability = function OwnPromiseCapability() { var promise = new Internal(); var state = getInternalState(promise); this.promise = promise; this.resolve = bind(internalResolve, promise, state); this.reject = bind(internalReject, promise, state); }; newPromiseCapabilityModule.f = newPromiseCapability = function newPromiseCapability(C) { return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); }; if (!IS_PURE && typeof NativePromise == 'function') { nativeThen = NativePromise.prototype.then; // wrap native Promise#then for native async functions redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { var that = this; return new PromiseConstructor(function (resolve, reject) { nativeThen.call(that, resolve, reject); }).then(onFulfilled, onRejected); }); // wrap fetch result if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, { // eslint-disable-next-line no-unused-vars fetch: function fetch(input) { return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); } }); } } $({ global: true, wrap: true, forced: FORCED }, { Promise: PromiseConstructor }); setToStringTag(PromiseConstructor, PROMISE, false, true); setSpecies(PROMISE); PromiseWrapper = path[PROMISE]; // statics $({ target: PROMISE, stat: true, forced: FORCED }, { // `Promise.reject` method // https://tc39.github.io/ecma262/#sec-promise.reject reject: function reject(r) { var capability = newPromiseCapability(this); capability.reject.call(undefined, r); return capability.promise; } }); $({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, { // `Promise.resolve` method // https://tc39.github.io/ecma262/#sec-promise.resolve resolve: function resolve(x) { return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); } }); $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, { // `Promise.all` method // https://tc39.github.io/ecma262/#sec-promise.all all: function all(iterable) { var C = this; var capability = newPromiseCapability(C); var resolve = capability.resolve; var reject = capability.reject; var result = perform(function () { var $promiseResolve = aFunction(C.resolve); var values = []; var counter = 0; var remaining = 1; iterate(iterable, function (promise) { var index = counter++; var alreadyCalled = false; values.push(undefined); remaining++; $promiseResolve.call(C, promise).then(function (value) { if (alreadyCalled) return; alreadyCalled = true; values[index] = value; --remaining || resolve(values); }, reject); }); --remaining || resolve(values); }); if (result.error) reject(result.value); return capability.promise; }, // `Promise.race` method // https://tc39.github.io/ecma262/#sec-promise.race race: function race(iterable) { var C = this; var capability = newPromiseCapability(C); var reject = capability.reject; var result = perform(function () { var $promiseResolve = aFunction(C.resolve); iterate(iterable, function (promise) { $promiseResolve.call(C, promise).then(capability.resolve, reject); }); }); if (result.error) reject(result.value); return capability.promise; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.apply.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.apply.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectApplyJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativeApply = getBuiltIn('Reflect', 'apply'); var functionApply = Function.apply; // MS Edge argumentsList argument is optional var OPTIONAL_ARGUMENTS_LIST = !fails(function () { nativeApply(function () { /* empty */ }); }); // `Reflect.apply` method // https://tc39.github.io/ecma262/#sec-reflect.apply $({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, { apply: function apply(target, thisArgument, argumentsList) { aFunction(target); anObject(argumentsList); return nativeApply ? nativeApply(target, thisArgument, argumentsList) : functionApply.call(target, thisArgument, argumentsList); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.construct.js": /*!**************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.construct.js ***! \**************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectConstructJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var aFunction = __webpack_require__( /*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var create = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var bind = __webpack_require__( /*! ../internals/function-bind */ "./node_modules/core-js/internals/function-bind.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var nativeConstruct = getBuiltIn('Reflect', 'construct'); // `Reflect.construct` method // https://tc39.github.io/ecma262/#sec-reflect.construct // MS Edge supports only 2 arguments and argumentsList argument is optional // FF Nightly sets third argument as `new.target`, but does not create `this` from it var NEW_TARGET_BUG = fails(function () { function F() { /* empty */ } return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); }); var ARGS_BUG = !fails(function () { nativeConstruct(function () { /* empty */ }); }); var FORCED = NEW_TARGET_BUG || ARGS_BUG; $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, { construct: function construct(Target, args /* , newTarget */ ) { aFunction(Target); anObject(args); var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); if (Target == newTarget) { // w/o altered newTarget, optimization for 0-4 arguments switch (args.length) { case 0: return new Target(); case 1: return new Target(args[0]); case 2: return new Target(args[0], args[1]); case 3: return new Target(args[0], args[1], args[2]); case 4: return new Target(args[0], args[1], args[2], args[3]); } // w/o altered newTarget, lot of arguments case var $args = [null]; $args.push.apply($args, args); return new (bind.apply(Target, $args))(); } // with altered newTarget, not support built-in constructors var proto = newTarget.prototype; var instance = create(isObject(proto) ? proto : Object.prototype); var result = Function.apply.call(Target, instance, args); return isObject(result) ? result : instance; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.define-property.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.define-property.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectDefinePropertyJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); // MS Edge has broken Reflect.defineProperty - throwing instead of returning false var ERROR_INSTEAD_OF_FALSE = fails(function () { // eslint-disable-next-line no-undef Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 }); }); // `Reflect.defineProperty` method // https://tc39.github.io/ecma262/#sec-reflect.defineproperty $({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, { defineProperty: function defineProperty(target, propertyKey, attributes) { anObject(target); var key = toPrimitive(propertyKey, true); anObject(attributes); try { definePropertyModule.f(target, key, attributes); return true; } catch (error) { return false; } } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.delete-property.js": /*!********************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.delete-property.js ***! \********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectDeletePropertyJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getOwnPropertyDescriptor = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; // `Reflect.deleteProperty` method // https://tc39.github.io/ecma262/#sec-reflect.deleteproperty $({ target: 'Reflect', stat: true }, { deleteProperty: function deleteProperty(target, propertyKey) { var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey); return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js": /*!********************************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js ***! \********************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectGetOwnPropertyDescriptorJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getOwnPropertyDescriptorModule = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); // `Reflect.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor $({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, { getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.get-prototype-of.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.get-prototype-of.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectGetPrototypeOfJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var objectGetPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var CORRECT_PROTOTYPE_GETTER = __webpack_require__( /*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js"); // `Reflect.getPrototypeOf` method // https://tc39.github.io/ecma262/#sec-reflect.getprototypeof $({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, { getPrototypeOf: function getPrototypeOf(target) { return objectGetPrototypeOf(anObject(target)); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.get.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.get.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectGetJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var getOwnPropertyDescriptorModule = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); // `Reflect.get` method // https://tc39.github.io/ecma262/#sec-reflect.get function get(target, propertyKey /* , receiver */ ) { var receiver = arguments.length < 3 ? target : arguments[2]; var descriptor, prototype; if (anObject(target) === receiver) return target[propertyKey]; if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value') ? descriptor.value : descriptor.get === undefined ? undefined : descriptor.get.call(receiver); if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); } $({ target: 'Reflect', stat: true }, { get: get }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.has.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.has.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectHasJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // `Reflect.has` method // https://tc39.github.io/ecma262/#sec-reflect.has $({ target: 'Reflect', stat: true }, { has: function has(target, propertyKey) { return propertyKey in target; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.is-extensible.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.is-extensible.js ***! \******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectIsExtensibleJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var objectIsExtensible = Object.isExtensible; // `Reflect.isExtensible` method // https://tc39.github.io/ecma262/#sec-reflect.isextensible $({ target: 'Reflect', stat: true }, { isExtensible: function isExtensible(target) { anObject(target); return objectIsExtensible ? objectIsExtensible(target) : true; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.own-keys.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.own-keys.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectOwnKeysJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ownKeys = __webpack_require__( /*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js"); // `Reflect.ownKeys` method // https://tc39.github.io/ecma262/#sec-reflect.ownkeys $({ target: 'Reflect', stat: true }, { ownKeys: ownKeys }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.prevent-extensions.js": /*!***********************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.prevent-extensions.js ***! \***********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectPreventExtensionsJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var getBuiltIn = __webpack_require__( /*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var FREEZING = __webpack_require__( /*! ../internals/freezing */ "./node_modules/core-js/internals/freezing.js"); // `Reflect.preventExtensions` method // https://tc39.github.io/ecma262/#sec-reflect.preventextensions $({ target: 'Reflect', stat: true, sham: !FREEZING }, { preventExtensions: function preventExtensions(target) { anObject(target); try { var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); if (objectPreventExtensions) objectPreventExtensions(target); return true; } catch (error) { return false; } } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.set-prototype-of.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.set-prototype-of.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectSetPrototypeOfJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var aPossiblePrototype = __webpack_require__( /*! ../internals/a-possible-prototype */ "./node_modules/core-js/internals/a-possible-prototype.js"); var objectSetPrototypeOf = __webpack_require__( /*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js"); // `Reflect.setPrototypeOf` method // https://tc39.github.io/ecma262/#sec-reflect.setprototypeof if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, { setPrototypeOf: function setPrototypeOf(target, proto) { anObject(target); aPossiblePrototype(proto); try { objectSetPrototypeOf(target, proto); return true; } catch (error) { return false; } } }); /***/ }, /***/ "./node_modules/core-js/modules/es.reflect.set.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.reflect.set.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsReflectSetJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var getOwnPropertyDescriptorModule = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var createPropertyDescriptor = __webpack_require__( /*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); // `Reflect.set` method // https://tc39.github.io/ecma262/#sec-reflect.set function set(target, propertyKey, V /* , receiver */ ) { var receiver = arguments.length < 4 ? target : arguments[3]; var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); var existingDescriptor, prototype; if (!ownDescriptor) { if (isObject(prototype = getPrototypeOf(target))) { return set(prototype, propertyKey, V, receiver); } ownDescriptor = createPropertyDescriptor(0); } if (has(ownDescriptor, 'value')) { if (ownDescriptor.writable === false || !isObject(receiver)) return false; if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) { if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; existingDescriptor.value = V; definePropertyModule.f(receiver, propertyKey, existingDescriptor); } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V)); return true; } return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true); } $({ target: 'Reflect', stat: true }, { set: set }); /***/ }, /***/ "./node_modules/core-js/modules/es.regexp.constructor.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.regexp.constructor.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsRegexpConstructorJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var isForced = __webpack_require__( /*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js"); var inheritIfRequired = __webpack_require__( /*! ../internals/inherit-if-required */ "./node_modules/core-js/internals/inherit-if-required.js"); var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var getOwnPropertyNames = __webpack_require__( /*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js").f; var isRegExp = __webpack_require__( /*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js"); var getFlags = __webpack_require__( /*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var setSpecies = __webpack_require__( /*! ../internals/set-species */ "./node_modules/core-js/internals/set-species.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var MATCH = wellKnownSymbol('match'); var NativeRegExp = global.RegExp; var RegExpPrototype = NativeRegExp.prototype; var re1 = /a/g; var re2 = /a/g; // "new" should create a new object, old webkit bug var CORRECT_NEW = new NativeRegExp(re1) !== re1; var FORCED = DESCRIPTORS && isForced('RegExp', !CORRECT_NEW || fails(function () { re2[MATCH] = false; // RegExp constructor can alter flags and IsRegExp works correct with @@match return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i'; })); // `RegExp` constructor // https://tc39.github.io/ecma262/#sec-regexp-constructor if (FORCED) { var RegExpWrapper = function RegExp(pattern, flags) { var thisIsRegExp = this instanceof RegExpWrapper; var patternIsRegExp = isRegExp(pattern); var flagsAreUndefined = flags === undefined; return !thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined ? pattern : inheritIfRequired(CORRECT_NEW ? new NativeRegExp(patternIsRegExp && !flagsAreUndefined ? pattern.source : pattern, flags) : NativeRegExp((patternIsRegExp = pattern instanceof RegExpWrapper) ? pattern.source : pattern, patternIsRegExp && flagsAreUndefined ? getFlags.call(pattern) : flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper); }; var proxy = function proxy(key) { key in RegExpWrapper || defineProperty(RegExpWrapper, key, { configurable: true, get: function get() { return NativeRegExp[key]; }, set: function set(it) { NativeRegExp[key] = it; } }); }; var keys = getOwnPropertyNames(NativeRegExp); var index = 0; while (keys.length > index) { proxy(keys[index++]); } RegExpPrototype.constructor = RegExpWrapper; RegExpWrapper.prototype = RegExpPrototype; redefine(global, 'RegExp', RegExpWrapper); } // https://tc39.github.io/ecma262/#sec-get-regexp-@@species setSpecies('RegExp'); /***/ }, /***/ "./node_modules/core-js/modules/es.regexp.exec.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.regexp.exec.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsRegexpExecJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var exec = __webpack_require__( /*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, { exec: exec }); /***/ }, /***/ "./node_modules/core-js/modules/es.regexp.flags.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.regexp.flags.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsRegexpFlagsJs(module, exports, __webpack_require__) { var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var objectDefinePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var regExpFlags = __webpack_require__( /*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); // `RegExp.prototype.flags` getter // https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags if (DESCRIPTORS && /./g.flags != 'g') { objectDefinePropertyModule.f(RegExp.prototype, 'flags', { configurable: true, get: regExpFlags }); } /***/ }, /***/ "./node_modules/core-js/modules/es.regexp.to-string.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.regexp.to-string.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsRegexpToStringJs(module, exports, __webpack_require__) { "use strict"; var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var flags = __webpack_require__( /*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js"); var TO_STRING = 'toString'; var RegExpPrototype = RegExp.prototype; var nativeToString = RegExpPrototype[TO_STRING]; var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; }); // FF44- RegExp#toString has a wrong name var INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method // https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring if (NOT_GENERIC || INCORRECT_NAME) { redefine(RegExp.prototype, TO_STRING, function toString() { var R = anObject(this); var p = String(R.source); var rf = R.flags; var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf); return '/' + p + '/' + f; }, { unsafe: true }); } /***/ }, /***/ "./node_modules/core-js/modules/es.set.js": /*!************************************************!*\ !*** ./node_modules/core-js/modules/es.set.js ***! \************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSetJs(module, exports, __webpack_require__) { "use strict"; var collection = __webpack_require__( /*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); var collectionStrong = __webpack_require__( /*! ../internals/collection-strong */ "./node_modules/core-js/internals/collection-strong.js"); // `Set` constructor // https://tc39.github.io/ecma262/#sec-set-objects module.exports = collection('Set', function (get) { return function Set() { return get(this, arguments.length ? arguments[0] : undefined); }; }, collectionStrong); /***/ }, /***/ "./node_modules/core-js/modules/es.string.anchor.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.anchor.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringAnchorJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.anchor` method // https://tc39.github.io/ecma262/#sec-string.prototype.anchor $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, { anchor: function anchor(name) { return createHTML(this, 'a', 'name', name); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.big.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.string.big.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringBigJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.big` method // https://tc39.github.io/ecma262/#sec-string.prototype.big $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, { big: function big() { return createHTML(this, 'big', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.blink.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.blink.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringBlinkJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.blink` method // https://tc39.github.io/ecma262/#sec-string.prototype.blink $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, { blink: function blink() { return createHTML(this, 'blink', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.bold.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.bold.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringBoldJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.bold` method // https://tc39.github.io/ecma262/#sec-string.prototype.bold $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, { bold: function bold() { return createHTML(this, 'b', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.code-point-at.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.code-point-at.js ***! \*****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringCodePointAtJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var codeAt = __webpack_require__( /*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").codeAt; // `String.prototype.codePointAt` method // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat $({ target: 'String', proto: true }, { codePointAt: function codePointAt(pos) { return codeAt(this, pos); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.ends-with.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.ends-with.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringEndsWithJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var notARegExp = __webpack_require__( /*! ../internals/not-a-regexp */ "./node_modules/core-js/internals/not-a-regexp.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var correctIsRegExpLogic = __webpack_require__( /*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js/internals/correct-is-regexp-logic.js"); var nativeEndsWith = ''.endsWith; var min = Math.min; // `String.prototype.endsWith` method // https://tc39.github.io/ecma262/#sec-string.prototype.endswith $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('endsWith') }, { endsWith: function endsWith(searchString /* , endPosition = @length */ ) { var that = String(requireObjectCoercible(this)); notARegExp(searchString); var endPosition = arguments.length > 1 ? arguments[1] : undefined; var len = toLength(that.length); var end = endPosition === undefined ? len : min(toLength(endPosition), len); var search = String(searchString); return nativeEndsWith ? nativeEndsWith.call(that, search, end) : that.slice(end - search.length, end) === search; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.fixed.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.fixed.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringFixedJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.fixed` method // https://tc39.github.io/ecma262/#sec-string.prototype.fixed $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, { fixed: function fixed() { return createHTML(this, 'tt', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.fontcolor.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.fontcolor.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringFontcolorJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.fontcolor` method // https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, { fontcolor: function fontcolor(color) { return createHTML(this, 'font', 'color', color); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.fontsize.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.fontsize.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringFontsizeJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.fontsize` method // https://tc39.github.io/ecma262/#sec-string.prototype.fontsize $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, { fontsize: function fontsize(size) { return createHTML(this, 'font', 'size', size); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.from-code-point.js": /*!*******************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.from-code-point.js ***! \*******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringFromCodePointJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toAbsoluteIndex = __webpack_require__( /*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js"); var fromCharCode = String.fromCharCode; var nativeFromCodePoint = String.fromCodePoint; // length should be 1, old FF problem var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; // `String.fromCodePoint` method // https://tc39.github.io/ecma262/#sec-string.fromcodepoint $({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, { fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars var elements = []; var length = arguments.length; var i = 0; var code; while (length > i) { code = +arguments[i++]; if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point'); elements.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)); } return elements.join(''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.includes.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.includes.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringIncludesJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var notARegExp = __webpack_require__( /*! ../internals/not-a-regexp */ "./node_modules/core-js/internals/not-a-regexp.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var correctIsRegExpLogic = __webpack_require__( /*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js/internals/correct-is-regexp-logic.js"); // `String.prototype.includes` method // https://tc39.github.io/ecma262/#sec-string.prototype.includes $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { includes: function includes(searchString /* , position = 0 */ ) { return !!~String(requireObjectCoercible(this)).indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.italics.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.italics.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringItalicsJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.italics` method // https://tc39.github.io/ecma262/#sec-string.prototype.italics $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, { italics: function italics() { return createHTML(this, 'i', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.iterator.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.iterator.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringIteratorJs(module, exports, __webpack_require__) { "use strict"; var charAt = __webpack_require__( /*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt; var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var defineIterator = __webpack_require__( /*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js"); var STRING_ITERATOR = 'String Iterator'; var setInternalState = InternalStateModule.set; var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); // `String.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator defineIterator(String, 'String', function (iterated) { setInternalState(this, { type: STRING_ITERATOR, string: String(iterated), index: 0 }); // `%StringIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next }, function next() { var state = getInternalState(this); var string = state.string; var index = state.index; var point; if (index >= string.length) return { value: undefined, done: true }; point = charAt(string, index); state.index += point.length; return { value: point, done: false }; }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.link.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.link.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringLinkJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.link` method // https://tc39.github.io/ecma262/#sec-string.prototype.link $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, { link: function link(url) { return createHTML(this, 'a', 'href', url); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.match.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.match.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringMatchJs(module, exports, __webpack_require__) { "use strict"; var fixRegExpWellKnownSymbolLogic = __webpack_require__( /*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var advanceStringIndex = __webpack_require__( /*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); var regExpExec = __webpack_require__( /*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); // @@match logic fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) { return [// `String.prototype.match` method // https://tc39.github.io/ecma262/#sec-string.prototype.match function match(regexp) { var O = requireObjectCoercible(this); var matcher = regexp == undefined ? undefined : regexp[MATCH]; return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); }, // `RegExp.prototype[@@match]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match function (regexp) { var res = maybeCallNative(nativeMatch, regexp, this); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); if (!rx.global) return regExpExec(rx, S); var fullUnicode = rx.unicode; rx.lastIndex = 0; var A = []; var n = 0; var result; while ((result = regExpExec(rx, S)) !== null) { var matchStr = String(result[0]); A[n] = matchStr; if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); n++; } return n === 0 ? null : A; }]; }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.raw.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.string.raw.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringRawJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); // `String.raw` method // https://tc39.github.io/ecma262/#sec-string.raw $({ target: 'String', stat: true }, { raw: function raw(template) { var rawTemplate = toIndexedObject(template.raw); var literalSegments = toLength(rawTemplate.length); var argumentsLength = arguments.length; var elements = []; var i = 0; while (literalSegments > i) { elements.push(String(rawTemplate[i++])); if (i < argumentsLength) elements.push(String(arguments[i])); } return elements.join(''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.repeat.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.repeat.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringRepeatJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var repeat = __webpack_require__( /*! ../internals/string-repeat */ "./node_modules/core-js/internals/string-repeat.js"); // `String.prototype.repeat` method // https://tc39.github.io/ecma262/#sec-string.prototype.repeat $({ target: 'String', proto: true }, { repeat: repeat }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.replace.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.replace.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringReplaceJs(module, exports, __webpack_require__) { "use strict"; var fixRegExpWellKnownSymbolLogic = __webpack_require__( /*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var toInteger = __webpack_require__( /*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var advanceStringIndex = __webpack_require__( /*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); var regExpExec = __webpack_require__( /*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); var max = Math.max; var min = Math.min; var floor = Math.floor; var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; var maybeToString = function maybeToString(it) { return it === undefined ? it : String(it); }; // @@replace logic fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) { return [// `String.prototype.replace` method // https://tc39.github.io/ecma262/#sec-string.prototype.replace function replace(searchValue, replaceValue) { var O = requireObjectCoercible(this); var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue); }, // `RegExp.prototype[@@replace]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace function (regexp, replaceValue) { var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var functionalReplace = typeof replaceValue === 'function'; if (!functionalReplace) replaceValue = String(replaceValue); var global = rx.global; if (global) { var fullUnicode = rx.unicode; rx.lastIndex = 0; } var results = []; while (true) { var result = regExpExec(rx, S); if (result === null) break; results.push(result); if (!global) break; var matchStr = String(result[0]); if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); } var accumulatedResult = ''; var nextSourcePosition = 0; for (var i = 0; i < results.length; i++) { result = results[i]; var matched = String(result[0]); var position = max(min(toInteger(result.index), S.length), 0); var captures = []; // NOTE: This is equivalent to // captures = result.slice(1).map(maybeToString) // but for some reason `nativeSlice.call(result, 1, result.length)` (called in // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. for (var j = 1; j < result.length; j++) { captures.push(maybeToString(result[j])); } var namedCaptures = result.groups; if (functionalReplace) { var replacerArgs = [matched].concat(captures, position, S); if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); var replacement = String(replaceValue.apply(undefined, replacerArgs)); } else { replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); } if (position >= nextSourcePosition) { accumulatedResult += S.slice(nextSourcePosition, position) + replacement; nextSourcePosition = position + matched.length; } } return accumulatedResult + S.slice(nextSourcePosition); }]; // https://tc39.github.io/ecma262/#sec-getsubstitution function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { var tailPos = position + matched.length; var m = captures.length; var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; if (namedCaptures !== undefined) { namedCaptures = toObject(namedCaptures); symbols = SUBSTITUTION_SYMBOLS; } return nativeReplace.call(replacement, symbols, function (match, ch) { var capture; switch (ch.charAt(0)) { case '$': return '$'; case '&': return matched; case '`': return str.slice(0, position); case "'": return str.slice(tailPos); case '<': capture = namedCaptures[ch.slice(1, -1)]; break; default: // \d\d? var n = +ch; if (n === 0) return match; if (n > m) { var f = floor(n / 10); if (f === 0) return match; if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); return match; } capture = captures[n - 1]; } return capture === undefined ? '' : capture; }); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.search.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.search.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringSearchJs(module, exports, __webpack_require__) { "use strict"; var fixRegExpWellKnownSymbolLogic = __webpack_require__( /*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var sameValue = __webpack_require__( /*! ../internals/same-value */ "./node_modules/core-js/internals/same-value.js"); var regExpExec = __webpack_require__( /*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); // @@search logic fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) { return [// `String.prototype.search` method // https://tc39.github.io/ecma262/#sec-string.prototype.search function search(regexp) { var O = requireObjectCoercible(this); var searcher = regexp == undefined ? undefined : regexp[SEARCH]; return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); }, // `RegExp.prototype[@@search]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search function (regexp) { var res = maybeCallNative(nativeSearch, regexp, this); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var previousLastIndex = rx.lastIndex; if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0; var result = regExpExec(rx, S); if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex; return result === null ? -1 : result.index; }]; }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.small.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.small.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringSmallJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.small` method // https://tc39.github.io/ecma262/#sec-string.prototype.small $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, { small: function small() { return createHTML(this, 'small', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.split.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.split.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringSplitJs(module, exports, __webpack_require__) { "use strict"; var fixRegExpWellKnownSymbolLogic = __webpack_require__( /*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js"); var isRegExp = __webpack_require__( /*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var speciesConstructor = __webpack_require__( /*! ../internals/species-constructor */ "./node_modules/core-js/internals/species-constructor.js"); var advanceStringIndex = __webpack_require__( /*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var callRegExpExec = __webpack_require__( /*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js"); var regexpExec = __webpack_require__( /*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var arrayPush = [].push; var min = Math.min; var MAX_UINT32 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError var SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); }); // @@split logic fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { var internalSplit; if ('abbc'.split(/(b)*/)[1] == 'c' || 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || '.'.split(/()()/).length > 1 || ''.split(/.?/).length) { // based on es5-shim implementation, need to rework it internalSplit = function internalSplit(separator, limit) { var string = String(requireObjectCoercible(this)); var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; if (lim === 0) return []; if (separator === undefined) return [string]; // If `separator` is not a regex, use native split if (!isRegExp(separator)) { return nativeSplit.call(string, separator, lim); } var output = []; var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : ''); var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy var separatorCopy = new RegExp(separator.source, flags + 'g'); var match, lastIndex, lastLength; while (match = regexpExec.call(separatorCopy, string)) { lastIndex = separatorCopy.lastIndex; if (lastIndex > lastLastIndex) { output.push(string.slice(lastLastIndex, match.index)); if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); lastLength = match[0].length; lastLastIndex = lastIndex; if (output.length >= lim) break; } if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop } if (lastLastIndex === string.length) { if (lastLength || !separatorCopy.test('')) output.push(''); } else output.push(string.slice(lastLastIndex)); return output.length > lim ? output.slice(0, lim) : output; }; // Chakra, V8 } else if ('0'.split(undefined, 0).length) { internalSplit = function internalSplit(separator, limit) { return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); }; } else internalSplit = nativeSplit; return [// `String.prototype.split` method // https://tc39.github.io/ecma262/#sec-string.prototype.split function split(separator, limit) { var O = requireObjectCoercible(this); var splitter = separator == undefined ? undefined : separator[SPLIT]; return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit); }, // `RegExp.prototype[@@split]` method // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split // // NOTE: This cannot be properly polyfilled in engines that don't support // the 'y' flag. function (regexp, limit) { var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); if (res.done) return res.value; var rx = anObject(regexp); var S = String(this); var C = speciesConstructor(rx, RegExp); var unicodeMatching = rx.unicode; var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to // simulate the 'y' flag. var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; if (lim === 0) return []; if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; var p = 0; var q = 0; var A = []; while (q < S.length) { splitter.lastIndex = SUPPORTS_Y ? q : 0; var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); var e; if (z === null || (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p) { q = advanceStringIndex(S, q, unicodeMatching); } else { A.push(S.slice(p, q)); if (A.length === lim) return A; for (var i = 1; i <= z.length - 1; i++) { A.push(z[i]); if (A.length === lim) return A; } q = p = e; } } A.push(S.slice(p)); return A; }]; }, !SUPPORTS_Y); /***/ }, /***/ "./node_modules/core-js/modules/es.string.starts-with.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.string.starts-with.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringStartsWithJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var toLength = __webpack_require__( /*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js"); var notARegExp = __webpack_require__( /*! ../internals/not-a-regexp */ "./node_modules/core-js/internals/not-a-regexp.js"); var requireObjectCoercible = __webpack_require__( /*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js"); var correctIsRegExpLogic = __webpack_require__( /*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js/internals/correct-is-regexp-logic.js"); var nativeStartsWith = ''.startsWith; var min = Math.min; // `String.prototype.startsWith` method // https://tc39.github.io/ecma262/#sec-string.prototype.startswith $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, { startsWith: function startsWith(searchString /* , position = 0 */ ) { var that = String(requireObjectCoercible(this)); notARegExp(searchString); var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); var search = String(searchString); return nativeStartsWith ? nativeStartsWith.call(that, search, index) : that.slice(index, index + search.length) === search; } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.strike.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.strike.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringStrikeJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.strike` method // https://tc39.github.io/ecma262/#sec-string.prototype.strike $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, { strike: function strike() { return createHTML(this, 'strike', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.sub.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.string.sub.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringSubJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.sub` method // https://tc39.github.io/ecma262/#sec-string.prototype.sub $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, { sub: function sub() { return createHTML(this, 'sub', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.sup.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/modules/es.string.sup.js ***! \*******************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringSupJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var createHTML = __webpack_require__( /*! ../internals/create-html */ "./node_modules/core-js/internals/create-html.js"); var forcedStringHTMLMethod = __webpack_require__( /*! ../internals/forced-string-html-method */ "./node_modules/core-js/internals/forced-string-html-method.js"); // `String.prototype.sup` method // https://tc39.github.io/ecma262/#sec-string.prototype.sup $({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, { sup: function sup() { return createHTML(this, 'sup', '', ''); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.string.trim.js": /*!********************************************************!*\ !*** ./node_modules/core-js/modules/es.string.trim.js ***! \********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsStringTrimJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var $trim = __webpack_require__( /*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim; var forcedStringTrimMethod = __webpack_require__( /*! ../internals/forced-string-trim-method */ "./node_modules/core-js/internals/forced-string-trim-method.js"); // `String.prototype.trim` method // https://tc39.github.io/ecma262/#sec-string.prototype.trim $({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { trim: function trim() { return $trim(this); } }); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.async-iterator.js": /*!******************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.async-iterator.js ***! \******************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolAsyncIteratorJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.asyncIterator` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.asynciterator defineWellKnownSymbol('asyncIterator'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.description.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.description.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolDescriptionJs(module, exports, __webpack_require__) { "use strict"; // `Symbol.prototype.description` getter // https://tc39.github.io/ecma262/#sec-symbol.prototype.description var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var defineProperty = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f; var copyConstructorProperties = __webpack_require__( /*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js"); var NativeSymbol = global.Symbol; if (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || // Safari 12 bug NativeSymbol().description !== undefined)) { var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description var SymbolWrapper = function Symbol() { var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]); var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)' : description === undefined ? NativeSymbol() : NativeSymbol(description); if (description === '') EmptyStringDescriptionStore[result] = true; return result; }; copyConstructorProperties(SymbolWrapper, NativeSymbol); var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype; symbolPrototype.constructor = SymbolWrapper; var symbolToString = symbolPrototype.toString; var native = String(NativeSymbol('test')) == 'Symbol(test)'; var regexp = /^Symbol\((.*)\)[^)]+$/; defineProperty(symbolPrototype, 'description', { configurable: true, get: function description() { var symbol = isObject(this) ? this.valueOf() : this; var string = symbolToString.call(symbol); if (has(EmptyStringDescriptionStore, symbol)) return ''; var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1'); return desc === '' ? undefined : desc; } }); $({ global: true, forced: true }, { Symbol: SymbolWrapper }); } /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.has-instance.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.has-instance.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolHasInstanceJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.hasInstance` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.hasinstance defineWellKnownSymbol('hasInstance'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.is-concat-spreadable.js": /*!************************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.is-concat-spreadable.js ***! \************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolIsConcatSpreadableJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.isConcatSpreadable` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable defineWellKnownSymbol('isConcatSpreadable'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.iterator.js": /*!************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.iterator.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolIteratorJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.iterator` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.iterator defineWellKnownSymbol('iterator'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.js": /*!***************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.js ***! \***************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolJs(module, exports, __webpack_require__) { "use strict"; var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var IS_PURE = __webpack_require__( /*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js"); var DESCRIPTORS = __webpack_require__( /*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); var NATIVE_SYMBOL = __webpack_require__( /*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js"); var fails = __webpack_require__( /*! ../internals/fails */ "./node_modules/core-js/internals/fails.js"); var has = __webpack_require__( /*! ../internals/has */ "./node_modules/core-js/internals/has.js"); var isArray = __webpack_require__( /*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toObject = __webpack_require__( /*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js"); var toIndexedObject = __webpack_require__( /*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js"); var toPrimitive = __webpack_require__( /*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js"); var createPropertyDescriptor = __webpack_require__( /*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js"); var nativeObjectCreate = __webpack_require__( /*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js"); var objectKeys = __webpack_require__( /*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js"); var getOwnPropertyNamesModule = __webpack_require__( /*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js"); var getOwnPropertyNamesExternal = __webpack_require__( /*! ../internals/object-get-own-property-names-external */ "./node_modules/core-js/internals/object-get-own-property-names-external.js"); var getOwnPropertySymbolsModule = __webpack_require__( /*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js"); var getOwnPropertyDescriptorModule = __webpack_require__( /*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js"); var definePropertyModule = __webpack_require__( /*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js"); var propertyIsEnumerableModule = __webpack_require__( /*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var redefine = __webpack_require__( /*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js"); var shared = __webpack_require__( /*! ../internals/shared */ "./node_modules/core-js/internals/shared.js"); var sharedKey = __webpack_require__( /*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js"); var hiddenKeys = __webpack_require__( /*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js"); var uid = __webpack_require__( /*! ../internals/uid */ "./node_modules/core-js/internals/uid.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var wrappedWellKnownSymbolModule = __webpack_require__( /*! ../internals/wrapped-well-known-symbol */ "./node_modules/core-js/internals/wrapped-well-known-symbol.js"); var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); var setToStringTag = __webpack_require__( /*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js"); var InternalStateModule = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js"); var $forEach = __webpack_require__( /*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach; var HIDDEN = sharedKey('hidden'); var SYMBOL = 'Symbol'; var PROTOTYPE = 'prototype'; var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); var setInternalState = InternalStateModule.set; var getInternalState = InternalStateModule.getterFor(SYMBOL); var ObjectPrototype = Object[PROTOTYPE]; var $Symbol = global.Symbol; var JSON = global.JSON; var nativeJSONStringify = JSON && JSON.stringify; var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; var nativeDefineProperty = definePropertyModule.f; var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; var AllSymbols = shared('symbols'); var ObjectPrototypeSymbols = shared('op-symbols'); var StringToSymbolRegistry = shared('string-to-symbol-registry'); var SymbolToStringRegistry = shared('symbol-to-string-registry'); var WellKnownSymbolsStore = shared('wks'); var QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDescriptor = DESCRIPTORS && fails(function () { return nativeObjectCreate(nativeDefineProperty({}, 'a', { get: function get() { return nativeDefineProperty(this, 'a', { value: 7 }).a; } })).a != 7; }) ? function (O, P, Attributes) { var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; nativeDefineProperty(O, P, Attributes); if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); } } : nativeDefineProperty; var wrap = function wrap(tag, description) { var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]); setInternalState(symbol, { type: SYMBOL, tag: tag, description: description }); if (!DESCRIPTORS) symbol.description = description; return symbol; }; var isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) { return typeof it == 'symbol'; } : function (it) { return Object(it) instanceof $Symbol; }; var $defineProperty = function defineProperty(O, P, Attributes) { if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); anObject(O); var key = toPrimitive(P, true); anObject(Attributes); if (has(AllSymbols, key)) { if (!Attributes.enumerable) { if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); O[HIDDEN][key] = true; } else { if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); } return setSymbolDescriptor(O, key, Attributes); } return nativeDefineProperty(O, key, Attributes); }; var $defineProperties = function defineProperties(O, Properties) { anObject(O); var properties = toIndexedObject(Properties); var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); $forEach(keys, function (key) { if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); }); return O; }; var $create = function create(O, Properties) { return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); }; var $propertyIsEnumerable = function propertyIsEnumerable(V) { var P = toPrimitive(V, true); var enumerable = nativePropertyIsEnumerable.call(this, P); if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { var it = toIndexedObject(O); var key = toPrimitive(P, true); if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; var descriptor = nativeGetOwnPropertyDescriptor(it, key); if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { descriptor.enumerable = true; } return descriptor; }; var $getOwnPropertyNames = function getOwnPropertyNames(O) { var names = nativeGetOwnPropertyNames(toIndexedObject(O)); var result = []; $forEach(names, function (key) { if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); }); return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); var result = []; $forEach(names, function (key) { if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { result.push(AllSymbols[key]); } }); return result; }; // `Symbol` constructor // https://tc39.github.io/ecma262/#sec-symbol-constructor if (!NATIVE_SYMBOL) { $Symbol = function Symbol() { if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); var tag = uid(description); var setter = function setter(value) { if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); }; if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); return wrap(tag, description); }; redefine($Symbol[PROTOTYPE], 'toString', function toString() { return getInternalState(this).tag; }); propertyIsEnumerableModule.f = $propertyIsEnumerable; definePropertyModule.f = $defineProperty; getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; if (DESCRIPTORS) { // https://github.com/tc39/proposal-Symbol-description nativeDefineProperty($Symbol[PROTOTYPE], 'description', { configurable: true, get: function description() { return getInternalState(this).description; } }); if (!IS_PURE) { redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); } } wrappedWellKnownSymbolModule.f = function (name) { return wrap(wellKnownSymbol(name), name); }; } $({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { Symbol: $Symbol }); $forEach(objectKeys(WellKnownSymbolsStore), function (name) { defineWellKnownSymbol(name); }); $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { // `Symbol.for` method // https://tc39.github.io/ecma262/#sec-symbol.for 'for': function _for(key) { var string = String(key); if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; var symbol = $Symbol(string); StringToSymbolRegistry[string] = symbol; SymbolToStringRegistry[symbol] = string; return symbol; }, // `Symbol.keyFor` method // https://tc39.github.io/ecma262/#sec-symbol.keyfor keyFor: function keyFor(sym) { if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; }, useSetter: function useSetter() { USE_SETTER = true; }, useSimple: function useSimple() { USE_SETTER = false; } }); $({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create create: $create, // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty defineProperty: $defineProperty, // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties defineProperties: $defineProperties, // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors getOwnPropertyDescriptor: $getOwnPropertyDescriptor }); $({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames getOwnPropertyNames: $getOwnPropertyNames, // `Object.getOwnPropertySymbols` method // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols getOwnPropertySymbols: $getOwnPropertySymbols }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives // https://bugs.chromium.org/p/v8/issues/detail?id=3443 $({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, { getOwnPropertySymbols: function getOwnPropertySymbols(it) { return getOwnPropertySymbolsModule.f(toObject(it)); } }); // `JSON.stringify` method behavior with symbols // https://tc39.github.io/ecma262/#sec-json.stringify JSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () { var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {} return nativeJSONStringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null || nativeJSONStringify({ a: symbol }) != '{}' // V8 throws on boxed symbols || nativeJSONStringify(Object(symbol)) != '{}'; }) }, { stringify: function stringify(it) { var args = [it]; var index = 1; var replacer, $replacer; while (arguments.length > index) { args.push(arguments[index++]); } $replacer = replacer = args[1]; if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined if (!isArray(replacer)) replacer = function replacer(key, value) { if (typeof $replacer == 'function') value = $replacer.call(this, key, value); if (!isSymbol(value)) return value; }; args[1] = replacer; return nativeJSONStringify.apply(JSON, args); } }); // `Symbol.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // `Symbol.prototype[@@toStringTag]` property // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag setToStringTag($Symbol, SYMBOL); hiddenKeys[HIDDEN] = true; /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.match-all.js": /*!*************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.match-all.js ***! \*************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolMatchAllJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.matchAll` well-known symbol defineWellKnownSymbol('matchAll'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.match.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.match.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolMatchJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.match` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.match defineWellKnownSymbol('match'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.replace.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.replace.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolReplaceJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.replace` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.replace defineWellKnownSymbol('replace'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.search.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.search.js ***! \**********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolSearchJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.search` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.search defineWellKnownSymbol('search'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.species.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.species.js ***! \***********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolSpeciesJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.species` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.species defineWellKnownSymbol('species'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.split.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.split.js ***! \*********************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolSplitJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.split` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.split defineWellKnownSymbol('split'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.to-primitive.js": /*!****************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.to-primitive.js ***! \****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolToPrimitiveJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.toPrimitive` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.toprimitive defineWellKnownSymbol('toPrimitive'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.to-string-tag.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.to-string-tag.js ***! \*****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolToStringTagJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.toStringTag` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.tostringtag defineWellKnownSymbol('toStringTag'); /***/ }, /***/ "./node_modules/core-js/modules/es.symbol.unscopables.js": /*!***************************************************************!*\ !*** ./node_modules/core-js/modules/es.symbol.unscopables.js ***! \***************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsSymbolUnscopablesJs(module, exports, __webpack_require__) { var defineWellKnownSymbol = __webpack_require__( /*! ../internals/define-well-known-symbol */ "./node_modules/core-js/internals/define-well-known-symbol.js"); // `Symbol.unscopables` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.unscopables defineWellKnownSymbol('unscopables'); /***/ }, /***/ "./node_modules/core-js/modules/es.weak-map.js": /*!*****************************************************!*\ !*** ./node_modules/core-js/modules/es.weak-map.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsWeakMapJs(module, exports, __webpack_require__) { "use strict"; var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var redefineAll = __webpack_require__( /*! ../internals/redefine-all */ "./node_modules/core-js/internals/redefine-all.js"); var InternalMetadataModule = __webpack_require__( /*! ../internals/internal-metadata */ "./node_modules/core-js/internals/internal-metadata.js"); var collection = __webpack_require__( /*! ../internals/collection */ "./node_modules/core-js/internals/collection.js"); var collectionWeak = __webpack_require__( /*! ../internals/collection-weak */ "./node_modules/core-js/internals/collection-weak.js"); var isObject = __webpack_require__( /*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var enforceIternalState = __webpack_require__( /*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").enforce; var NATIVE_WEAK_MAP = __webpack_require__( /*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js"); var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; var isExtensible = Object.isExtensible; var InternalWeakMap; var wrapper = function wrapper(get) { return function WeakMap() { return get(this, arguments.length ? arguments[0] : undefined); }; }; // `WeakMap` constructor // https://tc39.github.io/ecma262/#sec-weakmap-constructor var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak, true, true); // IE11 WeakMap frozen keys fix // We can't use feature detection because it crash some old IE builds // https://github.com/zloirock/core-js/issues/485 if (NATIVE_WEAK_MAP && IS_IE11) { InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); InternalMetadataModule.REQUIRED = true; var WeakMapPrototype = $WeakMap.prototype; var nativeDelete = WeakMapPrototype['delete']; var nativeHas = WeakMapPrototype.has; var nativeGet = WeakMapPrototype.get; var nativeSet = WeakMapPrototype.set; redefineAll(WeakMapPrototype, { 'delete': function _delete(key) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeDelete.call(this, key) || state.frozen['delete'](key); } return nativeDelete.call(this, key); }, has: function has(key) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeHas.call(this, key) || state.frozen.has(key); } return nativeHas.call(this, key); }, get: function get(key) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); } return nativeGet.call(this, key); }, set: function set(key, value) { if (isObject(key) && !isExtensible(key)) { var state = enforceIternalState(this); if (!state.frozen) state.frozen = new InternalWeakMap(); nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); } else nativeSet.call(this, key, value); return this; } }); } /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.define-metadata.js": /*!************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.define-metadata.js ***! \************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectDefineMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.defineMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */ ) { var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.delete-metadata.js": /*!************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.delete-metadata.js ***! \************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectDeleteMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toMetadataKey = ReflectMetadataModule.toKey; var getOrCreateMetadataMap = ReflectMetadataModule.getMap; var store = ReflectMetadataModule.store; // `Reflect.deleteMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */ ) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; if (metadataMap.size) return true; var targetMetadata = store.get(target); targetMetadata['delete'](targetKey); return !!targetMetadata.size || store['delete'](target); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js": /*!**************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js ***! \**************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectGetMetadataKeysJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` var Set = __webpack_require__( /*! ../modules/es.set */ "./node_modules/core-js/modules/es.set.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var iterate = __webpack_require__( /*! ../internals/iterate */ "./node_modules/core-js/internals/iterate.js"); var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; var toMetadataKey = ReflectMetadataModule.toKey; var from = function from(iter) { var result = []; iterate(iter, result.push, result); return result; }; var ordinaryMetadataKeys = function ordinaryMetadataKeys(O, P) { var oKeys = ordinaryOwnMetadataKeys(O, P); var parent = getPrototypeOf(O); if (parent === null) return oKeys; var pKeys = ordinaryMetadataKeys(parent, P); return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; }; // `Reflect.getMetadataKeys` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getMetadataKeys: function getMetadataKeys(target /* , targetKey */ ) { var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); return ordinaryMetadataKeys(anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.get-metadata.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-metadata.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectGetMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var ordinaryHasOwnMetadata = ReflectMetadataModule.has; var ordinaryGetOwnMetadata = ReflectMetadataModule.get; var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryGetMetadata = function ordinaryGetMetadata(MetadataKey, O, P) { var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); var parent = getPrototypeOf(O); return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; }; // `Reflect.getMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getMetadata: function getMetadata(metadataKey, target /* , targetKey */ ) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js": /*!******************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js ***! \******************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectGetOwnMetadataKeysJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadataKeys` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */ ) { var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); return ordinaryOwnMetadataKeys(anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js ***! \*************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectGetOwnMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var ordinaryGetOwnMetadata = ReflectMetadataModule.get; var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.getOwnMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */ ) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.has-metadata.js": /*!*********************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.has-metadata.js ***! \*********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectHasMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var getPrototypeOf = __webpack_require__( /*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js"); var ordinaryHasOwnMetadata = ReflectMetadataModule.has; var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryHasMetadata = function ordinaryHasMetadata(MetadataKey, O, P) { var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); if (hasOwn) return true; var parent = getPrototypeOf(O); return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; }; // `Reflect.hasMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */ ) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js": /*!*************************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js ***! \*************************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectHasOwnMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var ordinaryHasOwnMetadata = ReflectMetadataModule.has; var toMetadataKey = ReflectMetadataModule.toKey; // `Reflect.hasOwnMetadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */ ) { var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); } }); /***/ }, /***/ "./node_modules/core-js/modules/esnext.reflect.metadata.js": /*!*****************************************************************!*\ !*** ./node_modules/core-js/modules/esnext.reflect.metadata.js ***! \*****************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesEsnextReflectMetadataJs(module, exports, __webpack_require__) { var $ = __webpack_require__( /*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var ReflectMetadataModule = __webpack_require__( /*! ../internals/reflect-metadata */ "./node_modules/core-js/internals/reflect-metadata.js"); var anObject = __webpack_require__( /*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js"); var toMetadataKey = ReflectMetadataModule.toKey; var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; // `Reflect.metadata` method // https://github.com/rbuckton/reflect-metadata $({ target: 'Reflect', stat: true }, { metadata: function metadata(metadataKey, metadataValue) { return function decorator(target, key) { ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); }; } }); /***/ }, /***/ "./node_modules/core-js/modules/web.dom-collections.for-each.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***! \**********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesWebDomCollectionsForEachJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var DOMIterables = __webpack_require__( /*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); var forEach = __webpack_require__( /*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); for (var COLLECTION_NAME in DOMIterables) { var Collection = global[COLLECTION_NAME]; var CollectionPrototype = Collection && Collection.prototype; // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try { hide(CollectionPrototype, 'forEach', forEach); } catch (error) { CollectionPrototype.forEach = forEach; } } /***/ }, /***/ "./node_modules/core-js/modules/web.dom-collections.iterator.js": /*!**********************************************************************!*\ !*** ./node_modules/core-js/modules/web.dom-collections.iterator.js ***! \**********************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsModulesWebDomCollectionsIteratorJs(module, exports, __webpack_require__) { var global = __webpack_require__( /*! ../internals/global */ "./node_modules/core-js/internals/global.js"); var DOMIterables = __webpack_require__( /*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js"); var ArrayIteratorMethods = __webpack_require__( /*! ../modules/es.array.iterator */ "./node_modules/core-js/modules/es.array.iterator.js"); var hide = __webpack_require__( /*! ../internals/hide */ "./node_modules/core-js/internals/hide.js"); var wellKnownSymbol = __webpack_require__( /*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js"); var ITERATOR = wellKnownSymbol('iterator'); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); var ArrayValues = ArrayIteratorMethods.values; for (var COLLECTION_NAME in DOMIterables) { var Collection = global[COLLECTION_NAME]; var CollectionPrototype = Collection && Collection.prototype; if (CollectionPrototype) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype[ITERATOR] !== ArrayValues) try { hide(CollectionPrototype, ITERATOR, ArrayValues); } catch (error) { CollectionPrototype[ITERATOR] = ArrayValues; } if (!CollectionPrototype[TO_STRING_TAG]) hide(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) { // some Chrome versions have non-configurable methods on DOMTokenList if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try { hide(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]); } catch (error) { CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]; } } } } /***/ }, /***/ "./node_modules/core-js/proposals/reflect-metadata.js": /*!************************************************************!*\ !*** ./node_modules/core-js/proposals/reflect-metadata.js ***! \************************************************************/ /*! no static exports found */ /***/ function node_modulesCoreJsProposalsReflectMetadataJs(module, exports, __webpack_require__) { __webpack_require__( /*! ../modules/esnext.reflect.define-metadata */ "./node_modules/core-js/modules/esnext.reflect.define-metadata.js"); __webpack_require__( /*! ../modules/esnext.reflect.delete-metadata */ "./node_modules/core-js/modules/esnext.reflect.delete-metadata.js"); __webpack_require__( /*! ../modules/esnext.reflect.get-metadata */ "./node_modules/core-js/modules/esnext.reflect.get-metadata.js"); __webpack_require__( /*! ../modules/esnext.reflect.get-metadata-keys */ "./node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js"); __webpack_require__( /*! ../modules/esnext.reflect.get-own-metadata */ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata.js"); __webpack_require__( /*! ../modules/esnext.reflect.get-own-metadata-keys */ "./node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js"); __webpack_require__( /*! ../modules/esnext.reflect.has-metadata */ "./node_modules/core-js/modules/esnext.reflect.has-metadata.js"); __webpack_require__( /*! ../modules/esnext.reflect.has-own-metadata */ "./node_modules/core-js/modules/esnext.reflect.has-own-metadata.js"); __webpack_require__( /*! ../modules/esnext.reflect.metadata */ "./node_modules/core-js/modules/esnext.reflect.metadata.js"); /***/ }, /***/ "./node_modules/regenerator-runtime/runtime.js": /*!*****************************************************!*\ !*** ./node_modules/regenerator-runtime/runtime.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesRegeneratorRuntimeRuntimeJs(module, exports, __webpack_require__) { /** * Copyright (c) 2014-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var runtime = function (exports) { "use strict"; var Op = Object.prototype; var hasOwn = Op.hasOwnProperty; var undefined; // More compressible than void 0. var $Symbol = typeof Symbol === "function" ? Symbol : {}; var iteratorSymbol = $Symbol.iterator || "@@iterator"; var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function wrap(innerFn, outerFn, self, tryLocsList) { // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; var generator = Object.create(protoGenerator.prototype); var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next, // .throw, and .return methods. generator._invoke = makeInvokeMethod(innerFn, self, context); return generator; } exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion // record like context.tryEntries[i].completion. This interface could // have been (and was previously) designed to take a closure to be // invoked without arguments, but in all the cases we care about we // already have an existing method we want to call, so there's no need // to create a new function object. We can even get away with assuming // the method takes exactly one argument, since that happens to be true // in every case, so we don't have to touch the arguments object. The // only additional allocation required is the completion record, which // has a stable shape and so hopefully should be cheap to allocate. function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } var GenStateSuspendedStart = "suspendedStart"; var GenStateSuspendedYield = "suspendedYield"; var GenStateExecuting = "executing"; var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as // breaking out of the dispatch switch statement. var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and // .constructor.prototype properties for functions that return Generator // objects. For full spec compliance, you may wish to configure your // minifier not to mangle the names of these two functions. function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that // don't natively support it. var IteratorPrototype = {}; IteratorPrototype[iteratorSymbol] = function () { return this; }; var getProto = Object.getPrototypeOf; var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { // This environment has a native %IteratorPrototype%; use it instead // of the polyfill. IteratorPrototype = NativeIteratorPrototype; } var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; GeneratorFunctionPrototype.constructor = GeneratorFunction; GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the // Iterator interface in terms of a single ._invoke method. function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { prototype[method] = function (arg) { return this._invoke(method, arg); }; }); } exports.isGeneratorFunction = function (genFun) { var ctor = typeof genFun === "function" && genFun.constructor; return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can // do is to check its .name property. (ctor.displayName || ctor.name) === "GeneratorFunction" : false; }; exports.mark = function (genFun) { if (Object.setPrototypeOf) { Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); } else { genFun.__proto__ = GeneratorFunctionPrototype; if (!(toStringTagSymbol in genFun)) { genFun[toStringTagSymbol] = "GeneratorFunction"; } } genFun.prototype = Object.create(Gp); return genFun; }; // Within the body of any async function, `await x` is transformed to // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test // `hasOwn.call(value, "__await")` to determine if the yielded value is // meant to be awaited. exports.awrap = function (arg) { return { __await: arg }; }; function AsyncIterator(generator) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (record.type === "throw") { reject(record.arg); } else { var result = record.arg; var value = result.value; if (value && typeof value === "object" && hasOwn.call(value, "__await")) { return Promise.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }); } return Promise.resolve(value).then(function (unwrapped) { // When a yielded Promise is resolved, its final value becomes // the .value of the Promise<{value,done}> result for the // current iteration. result.value = unwrapped; resolve(result); }, function (error) { // If a rejected Promise was yielded, throw the rejection back // into the async generator function so it can be handled there. return invoke("throw", error, resolve, reject); }); } } var previousPromise; function enqueue(method, arg) { function callInvokeWithMethodAndArg() { return new Promise(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = // If enqueue has been called before, then we want to wait until // all previous Promises have been resolved before calling invoke, // so that results are always delivered in the correct order. If // enqueue has not been called before, then it is important to // call invoke immediately, without waiting on a callback to fire, // so that the async generator function has the opportunity to do // any necessary setup in a predictable way. This predictability // is why the Promise constructor synchronously invokes its // executor callback, and why async functions synchronously // execute code before the first await. Since we implement simple // async functions in terms of async generators, it is especially // important to get this right, even though it requires care. previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later // invocations of the iterator. callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } // Define the unified helper method that is used to implement .next, // .throw, and .return (see defineIteratorMethods). this._invoke = enqueue; } defineIteratorMethods(AsyncIterator.prototype); AsyncIterator.prototype[asyncIteratorSymbol] = function () { return this; }; exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of // AsyncIterator objects; they just return a Promise for the value of // the final result produced by the iterator. exports.async = function (innerFn, outerFn, self, tryLocsList) { var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }; function makeInvokeMethod(innerFn, self, context) { var state = GenStateSuspendedStart; return function invoke(method, arg) { if (state === GenStateExecuting) { throw new Error("Generator is already running"); } if (state === GenStateCompleted) { if (method === "throw") { throw arg; } // Be forgiving, per 25.3.3.3.3 of the spec: // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume return doneResult(); } context.method = method; context.arg = arg; while (true) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (context.method === "next") { // Setting context._sent for legacy support of Babel's // function.sent implementation. context.sent = context._sent = context.arg; } else if (context.method === "throw") { if (state === GenStateSuspendedStart) { state = GenStateCompleted; throw context.arg; } context.dispatchException(context.arg); } else if (context.method === "return") { context.abrupt("return", context.arg); } state = GenStateExecuting; var record = tryCatch(innerFn, self, context); if (record.type === "normal") { // If an exception is thrown from innerFn, we leave state === // GenStateExecuting and loop back for another invocation. state = context.done ? GenStateCompleted : GenStateSuspendedYield; if (record.arg === ContinueSentinel) { continue; } return { value: record.arg, done: context.done }; } else if (record.type === "throw") { state = GenStateCompleted; // Dispatch the exception by looping back around to the // context.dispatchException(context.arg) call above. context.method = "throw"; context.arg = record.arg; } } }; } // Call delegate.iterator[context.method](context.arg) and handle the // result, either by returning a { value, done } result from the // delegate iterator, or by modifying context.method and context.arg, // setting context.delegate to null, and returning the ContinueSentinel. function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (method === undefined) { // A .throw or .return when the delegate iterator has no .throw // method always terminates the yield* loop. context.delegate = null; if (context.method === "throw") { // Note: ["return"] must be used for ES3 parsing compatibility. if (delegate.iterator["return"]) { // If the delegate iterator has a return method, give it a // chance to clean up. context.method = "return"; context.arg = undefined; maybeInvokeDelegate(delegate, context); if (context.method === "throw") { // If maybeInvokeDelegate(context) changed context.method from // "return" to "throw", let that override the TypeError below. return ContinueSentinel; } } context.method = "throw"; context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if (record.type === "throw") { context.method = "throw"; context.arg = record.arg; context.delegate = null; return ContinueSentinel; } var info = record.arg; if (!info) { context.method = "throw"; context.arg = new TypeError("iterator result is not an object"); context.delegate = null; return ContinueSentinel; } if (info.done) { // Assign the result of the finished delegate to the temporary // variable specified by delegate.resultName (see delegateYield). context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield). context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the // exception, let the outer generator proceed normally. If // context.method was "next", forget context.arg since it has been // "consumed" by the delegate iterator. If context.method was // "return", allow the original .return call to continue in the // outer generator. if (context.method !== "return") { context.method = "next"; context.arg = undefined; } } else { // Re-yield the result returned by the delegate method. return info; } // The delegate iterator is finished, so forget it and continue with // the outer generator. context.delegate = null; return ContinueSentinel; } // Define Generator.prototype.{next,throw,return} in terms of the // unified ._invoke helper method. defineIteratorMethods(Gp); Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the // @@iterator function is called on it. Some browsers' implementations of the // iterator prototype chain incorrectly implement this, causing the Generator // object to not be returned from this call. This ensures that doesn't happen. // See https://github.com/facebook/regenerator/issues/274 for more details. Gp[iteratorSymbol] = function () { return this; }; Gp.toString = function () { return "[object Generator]"; }; function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; if (1 in locs) { entry.catchLoc = locs[1]; } if (2 in locs) { entry.finallyLoc = locs[2]; entry.afterLoc = locs[3]; } this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal"; delete record.arg; entry.completion = record; } function Context(tryLocsList) { // The root entry object (effectively a try statement without a catch // or a finally block) gives us a place to store values thrown from // locations where there is no enclosing try statement. this.tryEntries = [{ tryLoc: "root" }]; tryLocsList.forEach(pushTryEntry, this); this.reset(true); } exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } keys.reverse(); // Rather than returning an object with a next method, we keep // things simple and return the next function itself. return function next() { while (keys.length) { var key = keys.pop(); if (key in object) { next.value = key; next.done = false; return next; } } // To avoid creating an additional object, we just hang the .value // and .done properties off the next function object itself. This // also ensures that the minifier will not anonymize the function. next.done = true; return next; }; }; function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) { return iteratorMethod.call(iterable); } if (typeof iterable.next === "function") { return iterable; } if (!isNaN(iterable.length)) { var i = -1, next = function next() { while (++i < iterable.length) { if (hasOwn.call(iterable, i)) { next.value = iterable[i]; next.done = false; return next; } } next.value = undefined; next.done = true; return next; }; return next.next = next; } } // Return an iterator with no values. return { next: doneResult }; } exports.values = values; function doneResult() { return { value: undefined, done: true }; } Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { this.prev = 0; this.next = 0; // Resetting context._sent for legacy support of Babel's // function.sent implementation. this.sent = this._sent = undefined; this.done = false; this.delegate = null; this.method = "next"; this.arg = undefined; this.tryEntries.forEach(resetTryEntry); if (!skipTempReset) { for (var name in this) { // Not sure about the optimal order of these conditions: if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) { this[name] = undefined; } } } }, stop: function stop() { this.done = true; var rootEntry = this.tryEntries[0]; var rootRecord = rootEntry.completion; if (rootRecord.type === "throw") { throw rootRecord.arg; } return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) { throw exception; } var context = this; function handle(loc, caught) { record.type = "throw"; record.arg = exception; context.next = loc; if (caught) { // If the dispatched exception was caught by a catch block, // then let that catch block handle the exception normally. context.method = "next"; context.arg = undefined; } return !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; var record = entry.completion; if (entry.tryLoc === "root") { // Exception thrown outside of any try block that could handle // it, so set the completion value of the entire function to // throw the exception. return handle("end"); } if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"); var hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) { return handle(entry.catchLoc, true); } else if (this.prev < entry.finallyLoc) { return handle(entry.finallyLoc); } } else if (hasCatch) { if (this.prev < entry.catchLoc) { return handle(entry.catchLoc, true); } } else if (hasFinally) { if (this.prev < entry.finallyLoc) { return handle(entry.finallyLoc); } } else { throw new Error("try statement without catch or finally"); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) { // Ignore the finally entry if control is not jumping to a // location outside the try/catch block. finallyEntry = null; } var record = finallyEntry ? finallyEntry.completion : {}; record.type = type; record.arg = arg; if (finallyEntry) { this.method = "next"; this.next = finallyEntry.finallyLoc; return ContinueSentinel; } return this.complete(record); }, complete: function complete(record, afterLoc) { if (record.type === "throw") { throw record.arg; } if (record.type === "break" || record.type === "continue") { this.next = record.arg; } else if (record.type === "return") { this.rval = this.arg = record.arg; this.method = "return"; this.next = "end"; } else if (record.type === "normal" && afterLoc) { this.next = afterLoc; } return ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) { this.complete(entry.completion, entry.afterLoc); resetTryEntry(entry); return ContinueSentinel; } } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (record.type === "throw") { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } // The context.catch method must only be called with a location // argument that corresponds to a known catch block. throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }; if (this.method === "next") { // Deliberately forget the last sent value so that we don't // accidentally pass it on to the delegate. this.arg = undefined; } return ContinueSentinel; } }; // Regardless of whether this script is executing as a CommonJS module // or not, return the runtime object so that we can declare the variable // regeneratorRuntime in the outer scope, which allows this module to be // injected easily by `bin/regenerator --include-runtime script.js`. return exports; }( // If this script is executing as a CommonJS module, use module.exports // as the regeneratorRuntime namespace. Otherwise create a new empty // object. Either way, the resulting object will be used to initialize // the regeneratorRuntime variable at the top of this file. true ? module.exports : undefined); try { regeneratorRuntime = runtime; } catch (accidentalStrictMode) { // This module should not be running in strict mode, so the above // assignment should always work unless something is misconfigured. Just // in case runtime.js accidentally runs in strict mode, we can escape // strict mode using a global Function call. This could conceivably fail // if a Content Security Policy forbids using Function, but in that case // the proper solution is to fix the accidental strict mode problem. If // you've misconfigured your bundler to force strict mode and applied a // CSP to forbid Function, and you're not willing to fix either of those // problems, please detail your unique predicament in a GitHub issue. Function("r", "regeneratorRuntime = r")(runtime); } /***/ }, /***/ "./node_modules/tslib/tslib.es6.js": /*!*****************************************!*\ !*** ./node_modules/tslib/tslib.es6.js ***! \*****************************************/ /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ /***/ function node_modulesTslibTslibEs6Js(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function () { return __extends; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function () { return _assign; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function () { return __rest; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function () { return __decorate; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function () { return __param; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function () { return __metadata; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function () { return __awaiter; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function () { return __generator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function () { return __exportStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function () { return __values; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function () { return __read; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function () { return __spread; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function () { return __spreadArrays; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function () { return __await; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function () { return __asyncGenerator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function () { return __asyncDelegator; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function () { return __asyncValues; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function () { return __makeTemplateObject; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function () { return __importStar; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function () { return __importDefault; }); /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ var _extendStatics = function extendStatics(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; } || function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) d[p] = b[p]; } }; return _extendStatics(d, b); }; function __extends(d, b) { _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var _assign = function __assign() { _assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return _assign.apply(this, arguments); }; function __rest(s, e) { var t = {}; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; } if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); }; } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function sent() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) { try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __exportStar(m, exports) { for (var p in m) { if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } } function __values(o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function next() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) { ar = ar.concat(__read(arguments[i])); } return ar; } function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) { s += arguments[i].length; } for (var r = Array(s), k = 0, i = 0; i < il; i++) { for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) { r[k] = a[j]; } } return r; } ; function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; } ; function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; } result.default = mod; return result; } function __importDefault(mod) { return mod && mod.__esModule ? mod : { default: mod }; } /***/ }, /***/ "./node_modules/zone.js/dist/zone-evergreen.js": /*!*****************************************************!*\ !*** ./node_modules/zone.js/dist/zone-evergreen.js ***! \*****************************************************/ /*! no static exports found */ /***/ function node_modulesZoneJsDistZoneEvergreenJs(module, exports) { /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var Zone$1 = function (global) { var performance = global['performance']; function mark(name) { performance && performance['mark'] && performance['mark'](name); } function performanceMeasure(name, label) { performance && performance['measure'] && performance['measure'](name, label); } mark('Zone'); var checkDuplicate = global['__zone_symbol__forceDuplicateZoneCheck'] === true; if (global['Zone']) { // if global['Zone'] already exists (maybe zone.js was already loaded or // some other lib also registered a global object named Zone), we may need // to throw an error, but sometimes user may not want this error. // For example, // we have two web pages, page1 includes zone.js, page2 doesn't. // and the 1st time user load page1 and page2, everything work fine, // but when user load page2 again, error occurs because global['Zone'] already exists. // so we add a flag to let user choose whether to throw this error or not. // By default, if existing Zone is from zone.js, we will not throw the error. if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { throw new Error('Zone already loaded.'); } else { return global['Zone']; } } var Zone = /*#__PURE__*/ function () { function Zone(parent, zoneSpec) { _classCallCheck(this, Zone); this._parent = parent; this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; this._properties = zoneSpec && zoneSpec.properties || {}; this._zoneDelegate = new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec); } _createClass(Zone, [{ key: "get", value: function get(key) { var zone = this.getZoneWith(key); if (zone) return zone._properties[key]; } }, { key: "getZoneWith", value: function getZoneWith(key) { var current = this; while (current) { if (current._properties.hasOwnProperty(key)) { return current; } current = current._parent; } return null; } }, { key: "fork", value: function fork(zoneSpec) { if (!zoneSpec) throw new Error('ZoneSpec required!'); return this._zoneDelegate.fork(this, zoneSpec); } }, { key: "wrap", value: function wrap(callback, source) { if (typeof callback !== 'function') { throw new Error('Expecting function got: ' + callback); } var _callback = this._zoneDelegate.intercept(this, callback, source); var zone = this; return function () { return zone.runGuarded(_callback, this, arguments, source); }; } }, { key: "run", value: function run(callback, applyThis, applyArgs, source) { _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); } finally { _currentZoneFrame = _currentZoneFrame.parent; } } }, { key: "runGuarded", value: function runGuarded(callback) { var applyThis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; var applyArgs = arguments.length > 2 ? arguments[2] : undefined; var source = arguments.length > 3 ? arguments[3] : undefined; _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { try { return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); } catch (error) { if (this._zoneDelegate.handleError(this, error)) { throw error; } } } finally { _currentZoneFrame = _currentZoneFrame.parent; } } }, { key: "runTask", value: function runTask(task, applyThis, applyArgs) { if (task.zone != this) { throw new Error('A task can only be run in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); } // https://github.com/angular/zone.js/issues/778, sometimes eventTask // will run in notScheduled(canceled) state, we should not try to // run such kind of task but just return if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { return; } var reEntryGuard = task.state != running; reEntryGuard && task._transitionTo(running, scheduled); task.runCount++; var previousTask = _currentTask; _currentTask = task; _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { if (task.type == macroTask && task.data && !task.data.isPeriodic) { task.cancelFn = undefined; } try { return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); } catch (error) { if (this._zoneDelegate.handleError(this, error)) { throw error; } } } finally { // if the task's state is notScheduled or unknown, then it has already been cancelled // we should not reset the state to scheduled if (task.state !== notScheduled && task.state !== unknown) { if (task.type == eventTask || task.data && task.data.isPeriodic) { reEntryGuard && task._transitionTo(scheduled, running); } else { task.runCount = 0; this._updateTaskCount(task, -1); reEntryGuard && task._transitionTo(notScheduled, running, notScheduled); } } _currentZoneFrame = _currentZoneFrame.parent; _currentTask = previousTask; } } }, { key: "scheduleTask", value: function scheduleTask(task) { if (task.zone && task.zone !== this) { // check if the task was rescheduled, the newZone // should not be the children of the original zone var newZone = this; while (newZone) { if (newZone === task.zone) { throw Error("can not reschedule task to ".concat(this.name, " which is descendants of the original zone ").concat(task.zone.name)); } newZone = newZone.parent; } } task._transitionTo(scheduling, notScheduled); var zoneDelegates = []; task._zoneDelegates = zoneDelegates; task._zone = this; try { task = this._zoneDelegate.scheduleTask(this, task); } catch (err) { // should set task's state to unknown when scheduleTask throw error // because the err may from reschedule, so the fromState maybe notScheduled task._transitionTo(unknown, scheduling, notScheduled); // TODO: @JiaLiPassion, should we check the result from handleError? this._zoneDelegate.handleError(this, err); throw err; } if (task._zoneDelegates === zoneDelegates) { // we have to check because internally the delegate can reschedule the task. this._updateTaskCount(task, 1); } if (task.state == scheduling) { task._transitionTo(scheduled, scheduling); } return task; } }, { key: "scheduleMicroTask", value: function scheduleMicroTask(source, callback, data, customSchedule) { return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); } }, { key: "scheduleMacroTask", value: function scheduleMacroTask(source, callback, data, customSchedule, customCancel) { return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); } }, { key: "scheduleEventTask", value: function scheduleEventTask(source, callback, data, customSchedule, customCancel) { return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel)); } }, { key: "cancelTask", value: function cancelTask(task) { if (task.zone != this) throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' + (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')'); task._transitionTo(canceling, scheduled, running); try { this._zoneDelegate.cancelTask(this, task); } catch (err) { // if error occurs when cancelTask, transit the state to unknown task._transitionTo(unknown, canceling); this._zoneDelegate.handleError(this, err); throw err; } this._updateTaskCount(task, -1); task._transitionTo(notScheduled, canceling); task.runCount = 0; return task; } }, { key: "_updateTaskCount", value: function _updateTaskCount(task, count) { var zoneDelegates = task._zoneDelegates; if (count == -1) { task._zoneDelegates = null; } for (var i = 0; i < zoneDelegates.length; i++) { zoneDelegates[i]._updateTaskCount(task.type, count); } } }, { key: "parent", get: function get() { return this._parent; } }, { key: "name", get: function get() { return this._name; } }], [{ key: "assertZonePatched", value: function assertZonePatched() { if (global['Promise'] !== patches['ZoneAwarePromise']) { throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' + 'has been overwritten.\n' + 'Most likely cause is that a Promise polyfill has been loaded ' + 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' + 'If you must load one, do so before loading zone.js.)'); } } }, { key: "__load_patch", value: function __load_patch(name, fn) { if (patches.hasOwnProperty(name)) { if (checkDuplicate) { throw Error('Already loaded patch: ' + name); } } else if (!global['__Zone_disable_' + name]) { var perfName = 'Zone:' + name; mark(perfName); patches[name] = fn(global, Zone, _api); performanceMeasure(perfName, perfName); } } }, { key: "root", get: function get() { var zone = Zone.current; while (zone.parent) { zone = zone.parent; } return zone; } }, { key: "current", get: function get() { return _currentZoneFrame.zone; } }, { key: "currentTask", get: function get() { return _currentTask; } }]); return Zone; }(); Zone.__symbol__ = __symbol__; var DELEGATE_ZS = { name: '', onHasTask: function onHasTask(delegate, _, target, hasTaskState) { return delegate.hasTask(target, hasTaskState); }, onScheduleTask: function onScheduleTask(delegate, _, target, task) { return delegate.scheduleTask(target, task); }, onInvokeTask: function onInvokeTask(delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); }, onCancelTask: function onCancelTask(delegate, _, target, task) { return delegate.cancelTask(target, task); } }; var ZoneDelegate = /*#__PURE__*/ function () { function ZoneDelegate(zone, parentDelegate, zoneSpec) { _classCallCheck(this, ZoneDelegate); this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 }; this.zone = zone; this._parentDelegate = parentDelegate; this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS); this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt); this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone); this._interceptZS = zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS); this._interceptDlgt = zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt); this._interceptCurrZone = zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone); this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS); this._invokeDlgt = zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt); this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone); this._handleErrorZS = zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS); this._handleErrorDlgt = zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt); this._handleErrorCurrZone = zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); this._scheduleTaskDlgt = zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); this._invokeTaskZS = zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS); this._invokeTaskDlgt = zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt); this._invokeTaskCurrZone = zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone); this._cancelTaskZS = zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS); this._cancelTaskDlgt = zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt); this._cancelTaskCurrZone = zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone); this._hasTaskZS = null; this._hasTaskDlgt = null; this._hasTaskDlgtOwner = null; this._hasTaskCurrZone = null; var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask; var parentHasTask = parentDelegate && parentDelegate._hasTaskZS; if (zoneSpecHasTask || parentHasTask) { // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such // a case all task related interceptors must go through this ZD. We can't short circuit it. this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS; this._hasTaskDlgt = parentDelegate; this._hasTaskDlgtOwner = this; this._hasTaskCurrZone = zone; if (!zoneSpec.onScheduleTask) { this._scheduleTaskZS = DELEGATE_ZS; this._scheduleTaskDlgt = parentDelegate; this._scheduleTaskCurrZone = this.zone; } if (!zoneSpec.onInvokeTask) { this._invokeTaskZS = DELEGATE_ZS; this._invokeTaskDlgt = parentDelegate; this._invokeTaskCurrZone = this.zone; } if (!zoneSpec.onCancelTask) { this._cancelTaskZS = DELEGATE_ZS; this._cancelTaskDlgt = parentDelegate; this._cancelTaskCurrZone = this.zone; } } } _createClass(ZoneDelegate, [{ key: "fork", value: function fork(targetZone, zoneSpec) { return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) : new Zone(targetZone, zoneSpec); } }, { key: "intercept", value: function intercept(targetZone, callback, source) { return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) : callback; } }, { key: "invoke", value: function invoke(targetZone, callback, applyThis, applyArgs, source) { return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs); } }, { key: "handleError", value: function handleError(targetZone, error) { return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) : true; } }, { key: "scheduleTask", value: function scheduleTask(targetZone, task) { var returnTask = task; if (this._scheduleTaskZS) { if (this._hasTaskZS) { returnTask._zoneDelegates.push(this._hasTaskDlgtOwner); } returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task); if (!returnTask) returnTask = task; } else { if (task.scheduleFn) { task.scheduleFn(task); } else if (task.type == microTask) { scheduleMicroTask(task); } else { throw new Error('Task is missing scheduleFn.'); } } return returnTask; } }, { key: "invokeTask", value: function invokeTask(targetZone, task, applyThis, applyArgs) { return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs); } }, { key: "cancelTask", value: function cancelTask(targetZone, task) { var value; if (this._cancelTaskZS) { value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task); } else { if (!task.cancelFn) { throw Error('Task is not cancelable'); } value = task.cancelFn(task); } return value; } }, { key: "hasTask", value: function hasTask(targetZone, isEmpty) { // hasTask should not throw error so other ZoneDelegate // can still trigger hasTask callback try { this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); } catch (err) { this.handleError(targetZone, err); } } }, { key: "_updateTaskCount", value: function _updateTaskCount(type, count) { var counts = this._taskCounts; var prev = counts[type]; var next = counts[type] = prev + count; if (next < 0) { throw new Error('More tasks executed then were scheduled.'); } if (prev == 0 || next == 0) { var isEmpty = { microTask: counts['microTask'] > 0, macroTask: counts['macroTask'] > 0, eventTask: counts['eventTask'] > 0, change: type }; this.hasTask(this.zone, isEmpty); } } }]); return ZoneDelegate; }(); var ZoneTask = /*#__PURE__*/ function () { function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) { _classCallCheck(this, ZoneTask); this._zone = null; this.runCount = 0; this._zoneDelegates = null; this._state = 'notScheduled'; this.type = type; this.source = source; this.data = options; this.scheduleFn = scheduleFn; this.cancelFn = cancelFn; this.callback = callback; var self = this; // TODO: @JiaLiPassion options should have interface if (type === eventTask && options && options.useG) { this.invoke = ZoneTask.invokeTask; } else { this.invoke = function () { return ZoneTask.invokeTask.call(global, self, this, arguments); }; } } _createClass(ZoneTask, [{ key: "cancelScheduleRequest", value: function cancelScheduleRequest() { this._transitionTo(notScheduled, scheduling); } }, { key: "_transitionTo", value: function _transitionTo(toState, fromState1, fromState2) { if (this._state === fromState1 || this._state === fromState2) { this._state = toState; if (toState == notScheduled) { this._zoneDelegates = null; } } else { throw new Error("".concat(this.type, " '").concat(this.source, "': can not transition to '").concat(toState, "', expecting state '").concat(fromState1, "'").concat(fromState2 ? ' or \'' + fromState2 + '\'' : '', ", was '").concat(this._state, "'.")); } } }, { key: "toString", value: function toString() { if (this.data && typeof this.data.handleId !== 'undefined') { return this.data.handleId.toString(); } else { return Object.prototype.toString.call(this); } } // add toJSON method to prevent cyclic error when // call JSON.stringify(zoneTask) }, { key: "toJSON", value: function toJSON() { return { type: this.type, state: this.state, source: this.source, zone: this.zone.name, runCount: this.runCount }; } }, { key: "zone", get: function get() { return this._zone; } }, { key: "state", get: function get() { return this._state; } }], [{ key: "invokeTask", value: function invokeTask(task, target, args) { if (!task) { task = this; } _numberOfNestedTaskFrames++; try { task.runCount++; return task.zone.runTask(task, target, args); } finally { if (_numberOfNestedTaskFrames == 1) { drainMicroTaskQueue(); } _numberOfNestedTaskFrames--; } } }]); return ZoneTask; }(); ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// /// MICROTASK QUEUE ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// var symbolSetTimeout = __symbol__('setTimeout'); var symbolPromise = __symbol__('Promise'); var symbolThen = __symbol__('then'); var _microTaskQueue = []; var _isDrainingMicrotaskQueue = false; var nativeMicroTaskQueuePromise; function scheduleMicroTask(task) { // if we are not running in any task, and there has not been anything scheduled // we must bootstrap the initial task creation by manually scheduling the drain if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) { // We are not running in Task, so we need to kickstart the microtask queue. if (!nativeMicroTaskQueuePromise) { if (global[symbolPromise]) { nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0); } } if (nativeMicroTaskQueuePromise) { var nativeThen = nativeMicroTaskQueuePromise[symbolThen]; if (!nativeThen) { // native Promise is not patchable, we need to use `then` directly // issue 1078 nativeThen = nativeMicroTaskQueuePromise['then']; } nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); } else { global[symbolSetTimeout](drainMicroTaskQueue, 0); } } task && _microTaskQueue.push(task); } function drainMicroTaskQueue() { if (!_isDrainingMicrotaskQueue) { _isDrainingMicrotaskQueue = true; while (_microTaskQueue.length) { var queue = _microTaskQueue; _microTaskQueue = []; for (var i = 0; i < queue.length; i++) { var task = queue[i]; try { task.zone.runTask(task, null, null); } catch (error) { _api.onUnhandledError(error); } } } _api.microtaskDrainDone(); _isDrainingMicrotaskQueue = false; } } ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// /// BOOTSTRAP ////////////////////////////////////////////////////// ////////////////////////////////////////////////////// var NO_ZONE = { name: 'NO ZONE' }; var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown'; var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask'; var patches = {}; var _api = { symbol: __symbol__, currentZoneFrame: function currentZoneFrame() { return _currentZoneFrame; }, onUnhandledError: noop, microtaskDrainDone: noop, scheduleMicroTask: scheduleMicroTask, showUncaughtError: function showUncaughtError() { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; }, patchEventTarget: function patchEventTarget() { return []; }, patchOnProperties: noop, patchMethod: function patchMethod() { return noop; }, bindArguments: function bindArguments() { return []; }, patchThen: function patchThen() { return noop; }, patchMacroTask: function patchMacroTask() { return noop; }, setNativePromise: function setNativePromise(NativePromise) { // sometimes NativePromise.resolve static function // is not ready yet, (such as core-js/es6.promise) // so we need to check here. if (NativePromise && typeof NativePromise.resolve === 'function') { nativeMicroTaskQueuePromise = NativePromise.resolve(0); } }, patchEventPrototype: function patchEventPrototype() { return noop; }, isIEOrEdge: function isIEOrEdge() { return false; }, getGlobalObjects: function getGlobalObjects() { return undefined; }, ObjectDefineProperty: function ObjectDefineProperty() { return noop; }, ObjectGetOwnPropertyDescriptor: function ObjectGetOwnPropertyDescriptor() { return undefined; }, ObjectCreate: function ObjectCreate() { return undefined; }, ArraySlice: function ArraySlice() { return []; }, patchClass: function patchClass() { return noop; }, wrapWithCurrentZone: function wrapWithCurrentZone() { return noop; }, filterProperties: function filterProperties() { return []; }, attachOriginToPatched: function attachOriginToPatched() { return noop; }, _redefineProperty: function _redefineProperty() { return noop; }, patchCallbacks: function patchCallbacks() { return noop; } }; var _currentZoneFrame = { parent: null, zone: new Zone(null, null) }; var _currentTask = null; var _numberOfNestedTaskFrames = 0; function noop() {} function __symbol__(name) { return '__zone_symbol__' + name; } performanceMeasure('Zone', 'Zone'); return global['Zone'] = Zone; }(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var ObjectDefineProperty = Object.defineProperty; function readableObjectToString(obj) { if (obj && obj.toString === Object.prototype.toString) { var className = obj.constructor && obj.constructor.name; return (className ? className : '') + ': ' + JSON.stringify(obj); } return obj ? obj.toString() : Object.prototype.toString.call(obj); } var __symbol__ = api.symbol; var _uncaughtPromiseErrors = []; var symbolPromise = __symbol__('Promise'); var symbolThen = __symbol__('then'); var creationTrace = '__creationTrace__'; api.onUnhandledError = function (e) { if (api.showUncaughtError()) { var rejection = e && e.rejection; if (rejection) { console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined); } else { console.error(e); } } }; api.microtaskDrainDone = function () { while (_uncaughtPromiseErrors.length) { var _loop = function _loop() { var uncaughtPromiseError = _uncaughtPromiseErrors.shift(); try { uncaughtPromiseError.zone.runGuarded(function () { throw uncaughtPromiseError; }); } catch (error) { handleUnhandledRejection(error); } }; while (_uncaughtPromiseErrors.length) { _loop(); } } }; var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler'); function handleUnhandledRejection(e) { api.onUnhandledError(e); try { var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL]; if (handler && typeof handler === 'function') { handler.call(this, e); } } catch (err) {} } function isThenable(value) { return value && value.then; } function forwardResolution(value) { return value; } function forwardRejection(rejection) { return ZoneAwarePromise.reject(rejection); } var symbolState = __symbol__('state'); var symbolValue = __symbol__('value'); var symbolFinally = __symbol__('finally'); var symbolParentPromiseValue = __symbol__('parentPromiseValue'); var symbolParentPromiseState = __symbol__('parentPromiseState'); var source = 'Promise.then'; var UNRESOLVED = null; var RESOLVED = true; var REJECTED = false; var REJECTED_NO_CATCH = 0; function makeResolver(promise, state) { return function (v) { try { resolvePromise(promise, state, v); } catch (err) { resolvePromise(promise, false, err); } // Do not return value or you will break the Promise spec. }; } var once = function once() { var wasCalled = false; return function wrapper(wrappedFunction) { return function () { if (wasCalled) { return; } wasCalled = true; wrappedFunction.apply(null, arguments); }; }; }; var TYPE_ERROR = 'Promise resolved with itself'; var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace'); // Promise Resolution function resolvePromise(promise, state, value) { var onceWrapper = once(); if (promise === value) { throw new TypeError(TYPE_ERROR); } if (promise[symbolState] === UNRESOLVED) { // should only get value.then once based on promise spec. var then = null; try { if (typeof value === 'object' || typeof value === 'function') { then = value && value.then; } } catch (err) { onceWrapper(function () { resolvePromise(promise, false, err); })(); return promise; } // if (value instanceof ZoneAwarePromise) { if (state !== REJECTED && value instanceof ZoneAwarePromise && value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) && value[symbolState] !== UNRESOLVED) { clearRejectedNoCatch(value); resolvePromise(promise, value[symbolState], value[symbolValue]); } else if (state !== REJECTED && typeof then === 'function') { try { then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false))); } catch (err) { onceWrapper(function () { resolvePromise(promise, false, err); })(); } } else { promise[symbolState] = state; var queue = promise[symbolValue]; promise[symbolValue] = value; if (promise[symbolFinally] === symbolFinally) { // the promise is generated by Promise.prototype.finally if (state === RESOLVED) { // the state is resolved, should ignore the value // and use parent promise value promise[symbolState] = promise[symbolParentPromiseState]; promise[symbolValue] = promise[symbolParentPromiseValue]; } } // record task information in value when error occurs, so we can // do some additional work such as render longStackTrace if (state === REJECTED && value instanceof Error) { // check if longStackTraceZone is here var trace = Zone.currentTask && Zone.currentTask.data && Zone.currentTask.data[creationTrace]; if (trace) { // only keep the long stack trace into error when in longStackTraceZone ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace }); } } for (var i = 0; i < queue.length;) { scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]); } if (queue.length == 0 && state == REJECTED) { promise[symbolState] = REJECTED_NO_CATCH; try { // try to print more readable error log throw new Error('Uncaught (in promise): ' + readableObjectToString(value) + (value && value.stack ? '\n' + value.stack : '')); } catch (err) { var error = err; error.rejection = value; error.promise = promise; error.zone = Zone.current; error.task = Zone.currentTask; _uncaughtPromiseErrors.push(error); api.scheduleMicroTask(); // to make sure that it is running } } } } // Resolving an already resolved promise is a noop. return promise; } var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler'); function clearRejectedNoCatch(promise) { if (promise[symbolState] === REJECTED_NO_CATCH) { // if the promise is rejected no catch status // and queue.length > 0, means there is a error handler // here to handle the rejected promise, we should trigger // windows.rejectionhandled eventHandler or nodejs rejectionHandled // eventHandler try { var handler = Zone[REJECTION_HANDLED_HANDLER]; if (handler && typeof handler === 'function') { handler.call(this, { rejection: promise[symbolValue], promise: promise }); } } catch (err) {} promise[symbolState] = REJECTED; for (var i = 0; i < _uncaughtPromiseErrors.length; i++) { if (promise === _uncaughtPromiseErrors[i].promise) { _uncaughtPromiseErrors.splice(i, 1); } } } } function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) { clearRejectedNoCatch(promise); var promiseState = promise[symbolState]; var delegate = promiseState ? typeof onFulfilled === 'function' ? onFulfilled : forwardResolution : typeof onRejected === 'function' ? onRejected : forwardRejection; zone.scheduleMicroTask(source, function () { try { var parentPromiseValue = promise[symbolValue]; var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally]; if (isFinallyPromise) { // if the promise is generated from finally call, keep parent promise's state and value chainPromise[symbolParentPromiseValue] = parentPromiseValue; chainPromise[symbolParentPromiseState] = promiseState; } // should not pass value to finally callback var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]); resolvePromise(chainPromise, true, value); } catch (error) { // if error occurs, should always return this error resolvePromise(chainPromise, false, error); } }, chainPromise); } var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }'; var ZoneAwarePromise = /*#__PURE__*/ function () { function ZoneAwarePromise(executor) { _classCallCheck(this, ZoneAwarePromise); var promise = this; if (!(promise instanceof ZoneAwarePromise)) { throw new Error('Must be an instanceof Promise.'); } promise[symbolState] = UNRESOLVED; promise[symbolValue] = []; // queue; try { executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED)); } catch (error) { resolvePromise(promise, false, error); } } _createClass(ZoneAwarePromise, [{ key: "then", value: function then(onFulfilled, onRejected) { var chainPromise = new this.constructor(null); var zone = Zone.current; if (this[symbolState] == UNRESOLVED) { this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected); } else { scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected); } return chainPromise; } }, { key: "catch", value: function _catch(onRejected) { return this.then(null, onRejected); } }, { key: "finally", value: function _finally(onFinally) { var chainPromise = new this.constructor(null); chainPromise[symbolFinally] = symbolFinally; var zone = Zone.current; if (this[symbolState] == UNRESOLVED) { this[symbolValue].push(zone, chainPromise, onFinally, onFinally); } else { scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally); } return chainPromise; } }, { key: Symbol.toStringTag, get: function get() { return 'Promise'; } }], [{ key: "toString", value: function toString() { return ZONE_AWARE_PROMISE_TO_STRING; } }, { key: "resolve", value: function resolve(value) { return resolvePromise(new this(null), RESOLVED, value); } }, { key: "reject", value: function reject(error) { return resolvePromise(new this(null), REJECTED, error); } }, { key: "race", value: function race(values) { var resolve; var reject; var promise = new this(function (res, rej) { resolve = res; reject = rej; }); function onResolve(value) { resolve(value); } function onReject(error) { reject(error); } var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var value = _step.value; if (!isThenable(value)) { value = this.resolve(value); } value.then(onResolve, onReject); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return promise; } }, { key: "all", value: function all(values) { var _this = this; var resolve; var reject; var promise = new this(function (res, rej) { resolve = res; reject = rej; }); // Start at 2 to prevent prematurely resolving if .then is called immediately. var unresolvedCount = 2; var valueIndex = 0; var resolvedValues = []; var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { var _loop2 = function _loop2() { var value = _step2.value; if (!isThenable(value)) { value = _this.resolve(value); } var curValueIndex = valueIndex; value.then(function (value) { resolvedValues[curValueIndex] = value; unresolvedCount--; if (unresolvedCount === 0) { resolve(resolvedValues); } }, reject); unresolvedCount++; valueIndex++; }; for (var _iterator2 = values[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { _loop2(); } // Make the unresolvedCount zero-based again. } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return != null) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } unresolvedCount -= 2; if (unresolvedCount === 0) { resolve(resolvedValues); } return promise; } }]); return ZoneAwarePromise; }(); // Protect against aggressive optimizers dropping seemingly unused properties. // E.g. Closure Compiler in advanced mode. ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve; ZoneAwarePromise['reject'] = ZoneAwarePromise.reject; ZoneAwarePromise['race'] = ZoneAwarePromise.race; ZoneAwarePromise['all'] = ZoneAwarePromise.all; var NativePromise = global[symbolPromise] = global['Promise']; var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise'); var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise'); if (!desc || desc.configurable) { desc && delete desc.writable; desc && delete desc.value; if (!desc) { desc = { configurable: true, enumerable: true }; } desc.get = function () { // if we already set ZoneAwarePromise, use patched one // otherwise return native one. return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise]; }; desc.set = function (NewNativePromise) { if (NewNativePromise === ZoneAwarePromise) { // if the NewNativePromise is ZoneAwarePromise // save to global global[ZONE_AWARE_PROMISE] = NewNativePromise; } else { // if the NewNativePromise is not ZoneAwarePromise // for example: after load zone.js, some library just // set es6-promise to global, if we set it to global // directly, assertZonePatched will fail and angular // will not loaded, so we just set the NewNativePromise // to global[symbolPromise], so the result is just like // we load ES6 Promise before zone.js global[symbolPromise] = NewNativePromise; if (!NewNativePromise.prototype[symbolThen]) { patchThen(NewNativePromise); } api.setNativePromise(NewNativePromise); } }; ObjectDefineProperty(global, 'Promise', desc); } global['Promise'] = ZoneAwarePromise; var symbolThenPatched = __symbol__('thenPatched'); function patchThen(Ctor) { var proto = Ctor.prototype; var prop = ObjectGetOwnPropertyDescriptor(proto, 'then'); if (prop && (prop.writable === false || !prop.configurable)) { // check Ctor.prototype.then propertyDescriptor is writable or not // in meteor env, writable is false, we should ignore such case return; } var originalThen = proto.then; // Keep a reference to the original method. proto[symbolThen] = originalThen; Ctor.prototype.then = function (onResolve, onReject) { var _this2 = this; var wrapped = new ZoneAwarePromise(function (resolve, reject) { originalThen.call(_this2, resolve, reject); }); return wrapped.then(onResolve, onReject); }; Ctor[symbolThenPatched] = true; } api.patchThen = patchThen; function zoneify(fn) { return function () { var resultPromise = fn.apply(this, arguments); if (resultPromise instanceof ZoneAwarePromise) { return resultPromise; } var ctor = resultPromise.constructor; if (!ctor[symbolThenPatched]) { patchThen(ctor); } return resultPromise; }; } if (NativePromise) { patchThen(NativePromise); var fetch = global['fetch']; if (typeof fetch == 'function') { global[api.symbol('fetch')] = fetch; global['fetch'] = zoneify(fetch); } } // This is not part of public API, but it is useful for tests, so we expose it. Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; return ZoneAwarePromise; }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Suppress closure compiler errors about unknown 'Zone' variable * @fileoverview * @suppress {undefinedVars,globalThis,missingRequire} */ // issue #989, to reduce bundle size, use short name /** Object.getOwnPropertyDescriptor */ var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; /** Object.defineProperty */ var ObjectDefineProperty = Object.defineProperty; /** Object.getPrototypeOf */ var ObjectGetPrototypeOf = Object.getPrototypeOf; /** Object.create */ var ObjectCreate = Object.create; /** Array.prototype.slice */ var ArraySlice = Array.prototype.slice; /** addEventListener string const */ var ADD_EVENT_LISTENER_STR = 'addEventListener'; /** removeEventListener string const */ var REMOVE_EVENT_LISTENER_STR = 'removeEventListener'; /** zoneSymbol addEventListener */ var ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR); /** zoneSymbol removeEventListener */ var ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR); /** true string const */ var TRUE_STR = 'true'; /** false string const */ var FALSE_STR = 'false'; /** __zone_symbol__ string const */ var ZONE_SYMBOL_PREFIX = '__zone_symbol__'; function wrapWithCurrentZone(callback, source) { return Zone.current.wrap(callback, source); } function scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) { return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel); } var zoneSymbol = Zone.__symbol__; var isWindowExists = typeof window !== 'undefined'; var internalWindow = isWindowExists ? window : undefined; var _global = isWindowExists && internalWindow || typeof self === 'object' && self || global; var REMOVE_ATTRIBUTE = 'removeAttribute'; var NULL_ON_PROP_VALUE = [null]; function bindArguments(args, source) { for (var i = args.length - 1; i >= 0; i--) { if (typeof args[i] === 'function') { args[i] = wrapWithCurrentZone(args[i], source + '_' + i); } } return args; } function patchPrototype(prototype, fnNames) { var source = prototype.constructor['name']; var _loop3 = function _loop3(i) { var name = fnNames[i]; var delegate = prototype[name]; if (delegate) { var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name); if (!isPropertyWritable(prototypeDesc)) { return "continue"; } prototype[name] = function (delegate) { var patched = function patched() { return delegate.apply(this, bindArguments(arguments, source + '.' + name)); }; attachOriginToPatched(patched, delegate); return patched; }(delegate); } }; for (var i = 0; i < fnNames.length; i++) { var _ret = _loop3(i); if (_ret === "continue") continue; } } function isPropertyWritable(propertyDesc) { if (!propertyDesc) { return true; } if (propertyDesc.writable === false) { return false; } return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined'); } var isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope; // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify // this code. var isNode = !('nw' in _global) && typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]'; var isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); // we are in electron of nw, so we are both browser and nodejs // Make sure to access `process` through `_global` so that WebPack does not accidentally browserify // this code. var isMix = typeof _global.process !== 'undefined' && {}.toString.call(_global.process) === '[object process]' && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']); var zoneSymbolEventNames = {}; var wrapFn = function wrapFn(event) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; if (!event) { return; } var eventNameSymbol = zoneSymbolEventNames[event.type]; if (!eventNameSymbol) { eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type); } var target = this || event.target || _global; var listener = target[eventNameSymbol]; var result; if (isBrowser && target === internalWindow && event.type === 'error') { // window.onerror have different signiture // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror // and onerror callback will prevent default when callback return true var errorEvent = event; result = listener && listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); if (result === true) { event.preventDefault(); } } else { result = listener && listener.apply(this, arguments); if (result != undefined && !result) { event.preventDefault(); } } return result; }; function patchProperty(obj, prop, prototype) { var desc = ObjectGetOwnPropertyDescriptor(obj, prop); if (!desc && prototype) { // when patch window object, use prototype to check prop exist or not var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop); if (prototypeDesc) { desc = { enumerable: true, configurable: true }; } } // if the descriptor not exists or is not configurable // just return if (!desc || !desc.configurable) { return; } var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { return; } // A property descriptor cannot have getter/setter and be writable // deleting the writable and value properties avoids this error: // // TypeError: property descriptors must not specify a value or be writable when a // getter or setter has been specified delete desc.writable; delete desc.value; var originalDescGet = desc.get; var originalDescSet = desc.set; // substr(2) cuz 'onclick' -> 'click', etc var eventName = prop.substr(2); var eventNameSymbol = zoneSymbolEventNames[eventName]; if (!eventNameSymbol) { eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName); } desc.set = function (newValue) { // in some of windows's onproperty callback, this is undefined // so we need to check it var target = this; if (!target && obj === _global) { target = _global; } if (!target) { return; } var previousValue = target[eventNameSymbol]; if (previousValue) { target.removeEventListener(eventName, wrapFn); } // issue #978, when onload handler was added before loading zone.js // we should remove it with originalDescSet if (originalDescSet) { originalDescSet.apply(target, NULL_ON_PROP_VALUE); } if (typeof newValue === 'function') { target[eventNameSymbol] = newValue; target.addEventListener(eventName, wrapFn, false); } else { target[eventNameSymbol] = null; } }; // The getter would return undefined for unassigned properties but the default value of an // unassigned property is null desc.get = function () { // in some of windows's onproperty callback, this is undefined // so we need to check it var target = this; if (!target && obj === _global) { target = _global; } if (!target) { return null; } var listener = target[eventNameSymbol]; if (listener) { return listener; } else if (originalDescGet) { // result will be null when use inline event attribute, // such as // because the onclick function is internal raw uncompiled handler // the onclick will be evaluated when first time event was triggered or // the property is accessed, https://github.com/angular/zone.js/issues/525 // so we should use original native get to retrieve the handler var value = originalDescGet && originalDescGet.call(this); if (value) { desc.set.call(this, value); if (typeof target[REMOVE_ATTRIBUTE] === 'function') { target.removeAttribute(prop); } return value; } } return null; }; ObjectDefineProperty(obj, prop, desc); obj[onPropPatchedSymbol] = true; } function patchOnProperties(obj, properties, prototype) { if (properties) { for (var i = 0; i < properties.length; i++) { patchProperty(obj, 'on' + properties[i], prototype); } } else { var onProperties = []; for (var prop in obj) { if (prop.substr(0, 2) == 'on') { onProperties.push(prop); } } for (var j = 0; j < onProperties.length; j++) { patchProperty(obj, onProperties[j], prototype); } } } var originalInstanceKey = zoneSymbol('originalInstance'); // wrap some native API on `window` function patchClass(className) { var OriginalClass = _global[className]; if (!OriginalClass) return; // keep original class in global _global[zoneSymbol(className)] = OriginalClass; _global[className] = function () { var a = bindArguments(arguments, className); switch (a.length) { case 0: this[originalInstanceKey] = new OriginalClass(); break; case 1: this[originalInstanceKey] = new OriginalClass(a[0]); break; case 2: this[originalInstanceKey] = new OriginalClass(a[0], a[1]); break; case 3: this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]); break; case 4: this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]); break; default: throw new Error('Arg list too long.'); } }; // attach original delegate to patched function attachOriginToPatched(_global[className], OriginalClass); var instance = new OriginalClass(function () {}); var prop; for (prop in instance) { // https://bugs.webkit.org/show_bug.cgi?id=44721 if (className === 'XMLHttpRequest' && prop === 'responseBlob') continue; (function (prop) { if (typeof instance[prop] === 'function') { _global[className].prototype[prop] = function () { return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments); }; } else { ObjectDefineProperty(_global[className].prototype, prop, { set: function set(fn) { if (typeof fn === 'function') { this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop); // keep callback in wrapped function so we can // use it in Function.prototype.toString to return // the native one. attachOriginToPatched(this[originalInstanceKey][prop], fn); } else { this[originalInstanceKey][prop] = fn; } }, get: function get() { return this[originalInstanceKey][prop]; } }); } })(prop); } for (prop in OriginalClass) { if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) { _global[className][prop] = OriginalClass[prop]; } } } function copySymbolProperties(src, dest) { if (typeof Object.getOwnPropertySymbols !== 'function') { return; } var symbols = Object.getOwnPropertySymbols(src); symbols.forEach(function (symbol) { var desc = Object.getOwnPropertyDescriptor(src, symbol); Object.defineProperty(dest, symbol, { get: function get() { return src[symbol]; }, set: function set(value) { if (desc && (!desc.writable || typeof desc.set !== 'function')) { // if src[symbol] is not writable or not have a setter, just return return; } src[symbol] = value; }, enumerable: desc ? desc.enumerable : true, configurable: desc ? desc.configurable : true }); }); } var shouldCopySymbolProperties = false; function patchMethod(target, name, patchFn) { var proto = target; while (proto && !proto.hasOwnProperty(name)) { proto = ObjectGetPrototypeOf(proto); } if (!proto && target[name]) { // somehow we did not find it, but we can see it. This happens on IE for Window properties. proto = target; } var delegateName = zoneSymbol(name); var delegate = null; if (proto && !(delegate = proto[delegateName])) { delegate = proto[delegateName] = proto[name]; // check whether proto[name] is writable // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name); if (isPropertyWritable(desc)) { var patchDelegate = patchFn(delegate, delegateName, name); proto[name] = function () { return patchDelegate(this, arguments); }; attachOriginToPatched(proto[name], delegate); if (shouldCopySymbolProperties) { copySymbolProperties(delegate, proto[name]); } } } return delegate; } // TODO: @JiaLiPassion, support cancel task later if necessary function patchMacroTask(obj, funcName, metaCreator) { var setNative = null; function scheduleTask(task) { var data = task.data; data.args[data.cbIdx] = function () { task.invoke.apply(this, arguments); }; setNative.apply(data.target, data.args); return task; } setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) { var meta = metaCreator(self, args); if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); } else { // cause an error by calling it directly. return delegate.apply(self, args); } }; }); } function attachOriginToPatched(patched, original) { patched[zoneSymbol('OriginalDelegate')] = original; } var isDetectedIEOrEdge = false; var ieOrEdge = false; function isIE() { try { var ua = internalWindow.navigator.userAgent; if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { return true; } } catch (error) {} return false; } function isIEOrEdge() { if (isDetectedIEOrEdge) { return ieOrEdge; } isDetectedIEOrEdge = true; try { var ua = internalWindow.navigator.userAgent; if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) { ieOrEdge = true; } } catch (error) {} return ieOrEdge; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // override Function.prototype.toString to make zone.js patched function // look like native function Zone.__load_patch('toString', function (global) { // patch Func.prototype.toString to let them look like native var originalFunctionToString = Function.prototype.toString; var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate'); var PROMISE_SYMBOL = zoneSymbol('Promise'); var ERROR_SYMBOL = zoneSymbol('Error'); var newFunctionToString = function toString() { if (typeof this === 'function') { var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL]; if (originalDelegate) { if (typeof originalDelegate === 'function') { return originalFunctionToString.call(originalDelegate); } else { return Object.prototype.toString.call(originalDelegate); } } if (this === Promise) { var nativePromise = global[PROMISE_SYMBOL]; if (nativePromise) { return originalFunctionToString.call(nativePromise); } } if (this === Error) { var nativeError = global[ERROR_SYMBOL]; if (nativeError) { return originalFunctionToString.call(nativeError); } } } return originalFunctionToString.call(this); }; newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString; Function.prototype.toString = newFunctionToString; // patch Object.prototype.toString to let them look like native var originalObjectToString = Object.prototype.toString; var PROMISE_OBJECT_TO_STRING = '[object Promise]'; Object.prototype.toString = function () { if (this instanceof Promise) { return PROMISE_OBJECT_TO_STRING; } return originalObjectToString.call(this); }; }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ var passiveSupported = false; if (typeof window !== 'undefined') { try { var options = Object.defineProperty({}, 'passive', { get: function get() { passiveSupported = true; } }); window.addEventListener('test', options, options); window.removeEventListener('test', options, options); } catch (err) { passiveSupported = false; } } // an identifier to tell ZoneTask do not create a new invoke closure var OPTIMIZED_ZONE_EVENT_TASK_DATA = { useG: true }; var zoneSymbolEventNames$1 = {}; var globalSources = {}; var EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\w+)(true|false)$/; var IMMEDIATE_PROPAGATION_SYMBOL = '__zone_symbol__propagationStopped'; function patchEventTarget(_global, apis, patchOptions) { var ADD_EVENT_LISTENER = patchOptions && patchOptions.add || ADD_EVENT_LISTENER_STR; var REMOVE_EVENT_LISTENER = patchOptions && patchOptions.rm || REMOVE_EVENT_LISTENER_STR; var LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.listeners || 'eventListeners'; var REMOVE_ALL_LISTENERS_EVENT_LISTENER = patchOptions && patchOptions.rmAll || 'removeAllListeners'; var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER); var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':'; var PREPEND_EVENT_LISTENER = 'prependListener'; var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':'; var invokeTask = function invokeTask(task, target, event) { // for better performance, check isRemoved which is set // by removeEventListener if (task.isRemoved) { return; } var delegate = task.callback; if (typeof delegate === 'object' && delegate.handleEvent) { // create the bind version of handleEvent when invoke task.callback = function (event) { return delegate.handleEvent(event); }; task.originalDelegate = delegate; } // invoke static task.invoke task.invoke(task, target, [event]); var options = task.options; if (options && typeof options === 'object' && options.once) { // if options.once is true, after invoke once remove listener here // only browser need to do this, nodejs eventEmitter will cal removeListener // inside EventEmitter.once var _delegate = task.originalDelegate ? task.originalDelegate : task.callback; target[REMOVE_EVENT_LISTENER].call(target, event.type, _delegate, options); } }; // global shared zoneAwareCallback to handle all event callback with capture = false var globalZoneAwareCallback = function globalZoneAwareCallback(event) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; if (!event) { return; } // event.target is needed for Samsung TV and SourceBuffer // || global is needed https://github.com/angular/zone.js/issues/190 var target = this || event.target || _global; var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]]; if (tasks) { // invoke all tasks which attached to current target with given event.type and capture = false // for performance concern, if task.length === 1, just invoke if (tasks.length === 1) { invokeTask(tasks[0], target, event); } else { // https://github.com/angular/zone.js/issues/836 // copy the tasks array before invoke, to avoid // the callback will remove itself or other listener var copyTasks = tasks.slice(); for (var i = 0; i < copyTasks.length; i++) { if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { break; } invokeTask(copyTasks[i], target, event); } } } }; // global shared zoneAwareCallback to handle all event callback with capture = true var globalZoneAwareCaptureCallback = function globalZoneAwareCaptureCallback(event) { // https://github.com/angular/zone.js/issues/911, in IE, sometimes // event will be undefined, so we need to use window.event event = event || _global.event; if (!event) { return; } // event.target is needed for Samsung TV and SourceBuffer // || global is needed https://github.com/angular/zone.js/issues/190 var target = this || event.target || _global; var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]]; if (tasks) { // invoke all tasks which attached to current target with given event.type and capture = false // for performance concern, if task.length === 1, just invoke if (tasks.length === 1) { invokeTask(tasks[0], target, event); } else { // https://github.com/angular/zone.js/issues/836 // copy the tasks array before invoke, to avoid // the callback will remove itself or other listener var copyTasks = tasks.slice(); for (var i = 0; i < copyTasks.length; i++) { if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) { break; } invokeTask(copyTasks[i], target, event); } } } }; function patchEventTargetMethods(obj, patchOptions) { if (!obj) { return false; } var useGlobalCallback = true; if (patchOptions && patchOptions.useG !== undefined) { useGlobalCallback = patchOptions.useG; } var validateHandler = patchOptions && patchOptions.vh; var checkDuplicate = true; if (patchOptions && patchOptions.chkDup !== undefined) { checkDuplicate = patchOptions.chkDup; } var returnTarget = false; if (patchOptions && patchOptions.rt !== undefined) { returnTarget = patchOptions.rt; } var proto = obj; while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) { proto = ObjectGetPrototypeOf(proto); } if (!proto && obj[ADD_EVENT_LISTENER]) { // somehow we did not find it, but we can see it. This happens on IE for Window properties. proto = obj; } if (!proto) { return false; } if (proto[zoneSymbolAddEventListener]) { return false; } var eventNameToString = patchOptions && patchOptions.eventNameToString; // a shared global taskData to pass data for scheduleEventTask // so we do not need to create a new object just for pass some data var taskData = {}; var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER]; var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] = proto[REMOVE_EVENT_LISTENER]; var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] = proto[LISTENERS_EVENT_LISTENER]; var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] = proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER]; var nativePrependEventListener; if (patchOptions && patchOptions.prepend) { nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend]; } function checkIsPassive(task) { if (!passiveSupported && typeof taskData.options !== 'boolean' && typeof taskData.options !== 'undefined' && taskData.options !== null) { // options is a non-null non-undefined object // passive is not supported // don't pass options as object // just pass capture as a boolean task.options = !!taskData.options.capture; taskData.options = task.options; } } var customScheduleGlobal = function customScheduleGlobal(task) { // if there is already a task for the eventName + capture, // just return, because we use the shared globalZoneAwareCallback here. if (taskData.isExisting) { return; } checkIsPassive(task); return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); }; var customCancelGlobal = function customCancelGlobal(task) { // if task is not marked as isRemoved, this call is directly // from Zone.prototype.cancelTask, we should remove the task // from tasksList of target first if (!task.isRemoved) { var symbolEventNames = zoneSymbolEventNames$1[task.eventName]; var symbolEventName; if (symbolEventNames) { symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR]; } var existingTasks = symbolEventName && task.target[symbolEventName]; if (existingTasks) { for (var i = 0; i < existingTasks.length; i++) { var existingTask = existingTasks[i]; if (existingTask === task) { existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check task.isRemoved = true; if (existingTasks.length === 0) { // all tasks for the eventName + capture have gone, // remove globalZoneAwareCallback and remove the task cache from target task.allRemoved = true; task.target[symbolEventName] = null; } break; } } } } // if all tasks for the eventName + capture have gone, // we will really remove the global event callback, // if not, return if (!task.allRemoved) { return; } return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); }; var customScheduleNonGlobal = function customScheduleNonGlobal(task) { checkIsPassive(task); return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); }; var customSchedulePrepend = function customSchedulePrepend(task) { return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); }; var customCancelNonGlobal = function customCancelNonGlobal(task) { return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options); }; var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal; var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal; var compareTaskCallbackVsDelegate = function compareTaskCallbackVsDelegate(task, delegate) { var typeOfDelegate = typeof delegate; return typeOfDelegate === 'function' && task.callback === delegate || typeOfDelegate === 'object' && task.originalDelegate === delegate; }; var compare = patchOptions && patchOptions.diff ? patchOptions.diff : compareTaskCallbackVsDelegate; var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')]; var makeAddListener = function makeAddListener(nativeListener, addSource, customScheduleFn, customCancelFn) { var returnTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; var prepend = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false; return function () { var target = this || _global; var eventName = arguments[0]; var delegate = arguments[1]; if (!delegate) { return nativeListener.apply(this, arguments); } if (isNode && eventName === 'uncaughtException') { // don't patch uncaughtException of nodejs to prevent endless loop return nativeListener.apply(this, arguments); } // don't create the bind delegate function for handleEvent // case here to improve addEventListener performance // we will create the bind delegate when invoke var isHandleEvent = false; if (typeof delegate !== 'function') { if (!delegate.handleEvent) { return nativeListener.apply(this, arguments); } isHandleEvent = true; } if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { return; } var options = arguments[2]; if (blackListedEvents) { // check black list for (var i = 0; i < blackListedEvents.length; i++) { if (eventName === blackListedEvents[i]) { return nativeListener.apply(this, arguments); } } } var capture; var once = false; if (options === undefined) { capture = false; } else if (options === true) { capture = true; } else if (options === false) { capture = false; } else { capture = options ? !!options.capture : false; once = options ? !!options.once : false; } var zone = Zone.current; var symbolEventNames = zoneSymbolEventNames$1[eventName]; var symbolEventName; if (!symbolEventNames) { // the code is duplicate, but I just want to get some better performance var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; var symbol = ZONE_SYMBOL_PREFIX + falseEventName; var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; zoneSymbolEventNames$1[eventName] = {}; zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol; zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture; symbolEventName = capture ? symbolCapture : symbol; } else { symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; } var existingTasks = target[symbolEventName]; var isExisting = false; if (existingTasks) { // already have task registered isExisting = true; if (checkDuplicate) { for (var _i = 0; _i < existingTasks.length; _i++) { if (compare(existingTasks[_i], delegate)) { // same callback, same capture, same event name, just return return; } } } } else { existingTasks = target[symbolEventName] = []; } var source; var constructorName = target.constructor['name']; var targetSource = globalSources[constructorName]; if (targetSource) { source = targetSource[eventName]; } if (!source) { source = constructorName + addSource + (eventNameToString ? eventNameToString(eventName) : eventName); } // do not create a new object as task.data to pass those things // just use the global shared one taskData.options = options; if (once) { // if addEventListener with once options, we don't pass it to // native addEventListener, instead we keep the once setting // and handle ourselves. taskData.options.once = false; } taskData.target = target; taskData.capture = capture; taskData.eventName = eventName; taskData.isExisting = isExisting; var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; // keep taskData into data to allow onScheduleEventTask to access the task information if (data) { data.taskData = taskData; } var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn); // should clear taskData.target to avoid memory leak // issue, https://github.com/angular/angular/issues/20442 taskData.target = null; // need to clear up taskData because it is a global object if (data) { data.taskData = null; } // have to save those information to task in case // application may call task.zone.cancelTask() directly if (once) { options.once = true; } if (!(!passiveSupported && typeof task.options === 'boolean')) { // if not support passive, and we pass an option object // to addEventListener, we should save the options to task task.options = options; } task.target = target; task.capture = capture; task.eventName = eventName; if (isHandleEvent) { // save original delegate for compare to check duplicate task.originalDelegate = delegate; } if (!prepend) { existingTasks.push(task); } else { existingTasks.unshift(task); } if (returnTarget) { return target; } }; }; proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget); if (nativePrependEventListener) { proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true); } proto[REMOVE_EVENT_LISTENER] = function () { var target = this || _global; var eventName = arguments[0]; var options = arguments[2]; var capture; if (options === undefined) { capture = false; } else if (options === true) { capture = true; } else if (options === false) { capture = false; } else { capture = options ? !!options.capture : false; } var delegate = arguments[1]; if (!delegate) { return nativeRemoveEventListener.apply(this, arguments); } if (validateHandler && !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) { return; } var symbolEventNames = zoneSymbolEventNames$1[eventName]; var symbolEventName; if (symbolEventNames) { symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR]; } var existingTasks = symbolEventName && target[symbolEventName]; if (existingTasks) { for (var i = 0; i < existingTasks.length; i++) { var existingTask = existingTasks[i]; if (compare(existingTask, delegate)) { existingTasks.splice(i, 1); // set isRemoved to data for faster invokeTask check existingTask.isRemoved = true; if (existingTasks.length === 0) { // all tasks for the eventName + capture have gone, // remove globalZoneAwareCallback and remove the task cache from target existingTask.allRemoved = true; target[symbolEventName] = null; } existingTask.zone.cancelTask(existingTask); if (returnTarget) { return target; } return; } } } // issue 930, didn't find the event name or callback // from zone kept existingTasks, the callback maybe // added outside of zone, we need to call native removeEventListener // to try to remove it. return nativeRemoveEventListener.apply(this, arguments); }; proto[LISTENERS_EVENT_LISTENER] = function () { var target = this || _global; var eventName = arguments[0]; var listeners = []; var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); for (var i = 0; i < tasks.length; i++) { var task = tasks[i]; var delegate = task.originalDelegate ? task.originalDelegate : task.callback; listeners.push(delegate); } return listeners; }; proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () { var target = this || _global; var eventName = arguments[0]; if (!eventName) { var keys = Object.keys(target); for (var i = 0; i < keys.length; i++) { var prop = keys[i]; var match = EVENT_NAME_SYMBOL_REGX.exec(prop); var evtName = match && match[1]; // in nodejs EventEmitter, removeListener event is // used for monitoring the removeListener call, // so just keep removeListener eventListener until // all other eventListeners are removed if (evtName && evtName !== 'removeListener') { this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName); } } // remove removeListener listener finally this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener'); } else { var symbolEventNames = zoneSymbolEventNames$1[eventName]; if (symbolEventNames) { var symbolEventName = symbolEventNames[FALSE_STR]; var symbolCaptureEventName = symbolEventNames[TRUE_STR]; var tasks = target[symbolEventName]; var captureTasks = target[symbolCaptureEventName]; if (tasks) { var removeTasks = tasks.slice(); for (var _i2 = 0; _i2 < removeTasks.length; _i2++) { var task = removeTasks[_i2]; var delegate = task.originalDelegate ? task.originalDelegate : task.callback; this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options); } } if (captureTasks) { var _removeTasks = captureTasks.slice(); for (var _i3 = 0; _i3 < _removeTasks.length; _i3++) { var _task = _removeTasks[_i3]; var _delegate2 = _task.originalDelegate ? _task.originalDelegate : _task.callback; this[REMOVE_EVENT_LISTENER].call(this, eventName, _delegate2, _task.options); } } } } if (returnTarget) { return this; } }; // for native toString patch attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener); attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener); if (nativeRemoveAllListeners) { attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners); } if (nativeListeners) { attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners); } return true; } var results = []; for (var i = 0; i < apis.length; i++) { results[i] = patchEventTargetMethods(apis[i], patchOptions); } return results; } function findEventTasks(target, eventName) { var foundTasks = []; for (var prop in target) { var match = EVENT_NAME_SYMBOL_REGX.exec(prop); var evtName = match && match[1]; if (evtName && (!eventName || evtName === eventName)) { var tasks = target[prop]; if (tasks) { for (var i = 0; i < tasks.length; i++) { foundTasks.push(tasks[i]); } } } } return foundTasks; } function patchEventPrototype(global, api) { var Event = global['Event']; if (Event && Event.prototype) { api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) { self[IMMEDIATE_PROPAGATION_SYMBOL] = true; // we need to call the native stopImmediatePropagation // in case in some hybrid application, some part of // application will be controlled by zone, some are not delegate && delegate.apply(self, args); }; }); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function patchCallbacks(api, target, targetName, method, callbacks) { var symbol = Zone.__symbol__(method); if (target[symbol]) { return; } var nativeDelegate = target[symbol] = target[method]; target[method] = function (name, opts, options) { if (opts && opts.prototype) { callbacks.forEach(function (callback) { var source = "".concat(targetName, ".").concat(method, "::") + callback; var prototype = opts.prototype; if (prototype.hasOwnProperty(callback)) { var descriptor = api.ObjectGetOwnPropertyDescriptor(prototype, callback); if (descriptor && descriptor.value) { descriptor.value = api.wrapWithCurrentZone(descriptor.value, source); api._redefineProperty(opts.prototype, callback, descriptor); } else if (prototype[callback]) { prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); } } else if (prototype[callback]) { prototype[callback] = api.wrapWithCurrentZone(prototype[callback], source); } }); } return nativeDelegate.call(target, name, opts, options); }; api.attachOriginToPatched(target[method], nativeDelegate); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /* * This is necessary for Chrome and Chrome mobile, to enable * things like redefining `createdCallback` on an element. */ var zoneSymbol$1 = Zone.__symbol__; var _defineProperty = Object[zoneSymbol$1('defineProperty')] = Object.defineProperty; var _getOwnPropertyDescriptor = Object[zoneSymbol$1('getOwnPropertyDescriptor')] = Object.getOwnPropertyDescriptor; var _create = Object.create; var unconfigurablesKey = zoneSymbol$1('unconfigurables'); function propertyPatch() { Object.defineProperty = function (obj, prop, desc) { if (isUnconfigurable(obj, prop)) { throw new TypeError('Cannot assign to read only property \'' + prop + '\' of ' + obj); } var originalConfigurableFlag = desc.configurable; if (prop !== 'prototype') { desc = rewriteDescriptor(obj, prop, desc); } return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); }; Object.defineProperties = function (obj, props) { Object.keys(props).forEach(function (prop) { Object.defineProperty(obj, prop, props[prop]); }); return obj; }; Object.create = function (obj, proto) { if (typeof proto === 'object' && !Object.isFrozen(proto)) { Object.keys(proto).forEach(function (prop) { proto[prop] = rewriteDescriptor(obj, prop, proto[prop]); }); } return _create(obj, proto); }; Object.getOwnPropertyDescriptor = function (obj, prop) { var desc = _getOwnPropertyDescriptor(obj, prop); if (desc && isUnconfigurable(obj, prop)) { desc.configurable = false; } return desc; }; } function _redefineProperty(obj, prop, desc) { var originalConfigurableFlag = desc.configurable; desc = rewriteDescriptor(obj, prop, desc); return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag); } function isUnconfigurable(obj, prop) { return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop]; } function rewriteDescriptor(obj, prop, desc) { // issue-927, if the desc is frozen, don't try to change the desc if (!Object.isFrozen(desc)) { desc.configurable = true; } if (!desc.configurable) { // issue-927, if the obj is frozen, don't try to set the desc to obj if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) { _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} }); } if (obj[unconfigurablesKey]) { obj[unconfigurablesKey][prop] = true; } } return desc; } function _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) { try { return _defineProperty(obj, prop, desc); } catch (error) { if (desc.configurable) { // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's // retry with the original flag value if (typeof originalConfigurableFlag == 'undefined') { delete desc.configurable; } else { desc.configurable = originalConfigurableFlag; } try { return _defineProperty(obj, prop, desc); } catch (error) { var descJson = null; try { descJson = JSON.stringify(desc); } catch (error) { descJson = desc.toString(); } console.log("Attempting to configure '".concat(prop, "' with descriptor '").concat(descJson, "' on object '").concat(obj, "' and got error, giving up: ").concat(error)); } } else { throw error; } } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {globalThis} */ var globalEventHandlersEventNames = ['abort', 'animationcancel', 'animationend', 'animationiteration', 'auxclick', 'beforeinput', 'blur', 'cancel', 'canplay', 'canplaythrough', 'change', 'compositionstart', 'compositionupdate', 'compositionend', 'cuechange', 'click', 'close', 'contextmenu', 'curechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragexit', 'dragleave', 'dragover', 'drop', 'durationchange', 'emptied', 'ended', 'error', 'focus', 'focusin', 'focusout', 'gotpointercapture', 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'load', 'loadstart', 'loadeddata', 'loadedmetadata', 'lostpointercapture', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'mousewheel', 'orientationchange', 'pause', 'play', 'playing', 'pointercancel', 'pointerdown', 'pointerenter', 'pointerleave', 'pointerlockchange', 'mozpointerlockchange', 'webkitpointerlockerchange', 'pointerlockerror', 'mozpointerlockerror', 'webkitpointerlockerror', 'pointermove', 'pointout', 'pointerover', 'pointerup', 'progress', 'ratechange', 'reset', 'resize', 'scroll', 'seeked', 'seeking', 'select', 'selectionchange', 'selectstart', 'show', 'sort', 'stalled', 'submit', 'suspend', 'timeupdate', 'volumechange', 'touchcancel', 'touchmove', 'touchstart', 'touchend', 'transitioncancel', 'transitionend', 'waiting', 'wheel']; var documentEventNames = ['afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', 'visibilitychange', 'resume']; var windowEventNames = ['absolutedeviceorientation', 'afterinput', 'afterprint', 'appinstalled', 'beforeinstallprompt', 'beforeprint', 'beforeunload', 'devicelight', 'devicemotion', 'deviceorientation', 'deviceorientationabsolute', 'deviceproximity', 'hashchange', 'languagechange', 'message', 'mozbeforepaint', 'offline', 'online', 'paint', 'pageshow', 'pagehide', 'popstate', 'rejectionhandled', 'storage', 'unhandledrejection', 'unload', 'userproximity', 'vrdisplyconnected', 'vrdisplaydisconnected', 'vrdisplaypresentchange']; var htmlElementEventNames = ['beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend', 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend', 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend']; var mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend']; var ieElementEventNames = ['activate', 'afterupdate', 'ariarequest', 'beforeactivate', 'beforedeactivate', 'beforeeditfocus', 'beforeupdate', 'cellchange', 'controlselect', 'dataavailable', 'datasetchanged', 'datasetcomplete', 'errorupdate', 'filterchange', 'layoutcomplete', 'losecapture', 'move', 'moveend', 'movestart', 'propertychange', 'resizeend', 'resizestart', 'rowenter', 'rowexit', 'rowsdelete', 'rowsinserted', 'command', 'compassneedscalibration', 'deactivate', 'help', 'mscontentzoom', 'msmanipulationstatechanged', 'msgesturechange', 'msgesturedoubletap', 'msgestureend', 'msgesturehold', 'msgesturestart', 'msgesturetap', 'msgotpointercapture', 'msinertiastart', 'mslostpointercapture', 'mspointercancel', 'mspointerdown', 'mspointerenter', 'mspointerhover', 'mspointerleave', 'mspointermove', 'mspointerout', 'mspointerover', 'mspointerup', 'pointerout', 'mssitemodejumplistitemremoved', 'msthumbnailclick', 'stop', 'storagecommit']; var webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror']; var formEventNames = ['autocomplete', 'autocompleteerror']; var detailEventNames = ['toggle']; var frameEventNames = ['load']; var frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror']; var marqueeEventNames = ['bounce', 'finish', 'start']; var XMLHttpRequestEventNames = ['loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend', 'readystatechange']; var IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close']; var websocketEventNames = ['close', 'error', 'open', 'message']; var workerEventNames = ['error', 'message']; var eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); function filterProperties(target, onProperties, ignoreProperties) { if (!ignoreProperties || ignoreProperties.length === 0) { return onProperties; } var tip = ignoreProperties.filter(function (ip) { return ip.target === target; }); if (!tip || tip.length === 0) { return onProperties; } var targetIgnoreProperties = tip[0].ignoreProperties; return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; }); } function patchFilteredProperties(target, onProperties, ignoreProperties, prototype) { // check whether target is available, sometimes target will be undefined // because different browser or some 3rd party plugin. if (!target) { return; } var filteredProperties = filterProperties(target, onProperties, ignoreProperties); patchOnProperties(target, filteredProperties, prototype); } function propertyDescriptorPatch(api, _global) { if (isNode && !isMix) { return; } if (Zone[api.symbol('patchEvents')]) { // events are already been patched by legacy patch. return; } var supportsWebSocket = typeof WebSocket !== 'undefined'; var ignoreProperties = _global['__Zone_ignore_on_properties']; // for browsers that we can patch the descriptor: Chrome & Firefox if (isBrowser) { var _internalWindow = window; var ignoreErrorProperties = isIE ? [{ target: _internalWindow, ignoreProperties: ['error'] }] : []; // in IE/Edge, onProp not exist in window object, but in WindowPrototype // so we need to pass WindowPrototype to check onProp exist or not patchFilteredProperties(_internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(_internalWindow)); patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); if (typeof _internalWindow['SVGElement'] !== 'undefined') { patchFilteredProperties(_internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); } patchFilteredProperties(Element.prototype, eventNames, ignoreProperties); patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties); patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties); patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties); patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties); patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties); var HTMLMarqueeElement = _internalWindow['HTMLMarqueeElement']; if (HTMLMarqueeElement) { patchFilteredProperties(HTMLMarqueeElement.prototype, marqueeEventNames, ignoreProperties); } var Worker = _internalWindow['Worker']; if (Worker) { patchFilteredProperties(Worker.prototype, workerEventNames, ignoreProperties); } } var XMLHttpRequest = _global['XMLHttpRequest']; if (XMLHttpRequest) { // XMLHttpRequest is not available in ServiceWorker, so we need to check here patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); } var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget) { patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); } if (typeof IDBIndex !== 'undefined') { patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties); patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties); } if (supportsWebSocket) { patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ Zone.__load_patch('util', function (global, Zone, api) { api.patchOnProperties = patchOnProperties; api.patchMethod = patchMethod; api.bindArguments = bindArguments; api.patchMacroTask = patchMacroTask; // In earlier version of zone.js (<0.9.0), we use env name `__zone_symbol__BLACK_LISTED_EVENTS` to // define which events will not be patched by `Zone.js`. // In newer version (>=0.9.0), we change the env name to `__zone_symbol__UNPATCHED_EVENTS` to keep // the name consistent with angular repo. // The `__zone_symbol__BLACK_LISTED_EVENTS` is deprecated, but it is still be supported for // backwards compatibility. var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS'); var SYMBOL_UNPATCHED_EVENTS = Zone.__symbol__('UNPATCHED_EVENTS'); if (global[SYMBOL_UNPATCHED_EVENTS]) { global[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_UNPATCHED_EVENTS]; } if (global[SYMBOL_BLACK_LISTED_EVENTS]) { Zone[SYMBOL_BLACK_LISTED_EVENTS] = Zone[SYMBOL_UNPATCHED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS]; } api.patchEventPrototype = patchEventPrototype; api.patchEventTarget = patchEventTarget; api.isIEOrEdge = isIEOrEdge; api.ObjectDefineProperty = ObjectDefineProperty; api.ObjectGetOwnPropertyDescriptor = ObjectGetOwnPropertyDescriptor; api.ObjectCreate = ObjectCreate; api.ArraySlice = ArraySlice; api.patchClass = patchClass; api.wrapWithCurrentZone = wrapWithCurrentZone; api.filterProperties = filterProperties; api.attachOriginToPatched = attachOriginToPatched; api._redefineProperty = _redefineProperty; api.patchCallbacks = patchCallbacks; api.getGlobalObjects = function () { return { globalSources: globalSources, zoneSymbolEventNames: zoneSymbolEventNames$1, eventNames: eventNames, isBrowser: isBrowser, isMix: isMix, isNode: isNode, TRUE_STR: TRUE_STR, FALSE_STR: FALSE_STR, ZONE_SYMBOL_PREFIX: ZONE_SYMBOL_PREFIX, ADD_EVENT_LISTENER_STR: ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR: REMOVE_EVENT_LISTENER_STR }; }; }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ var taskSymbol = zoneSymbol('zoneTask'); function patchTimer(window, setName, cancelName, nameSuffix) { var setNative = null; var clearNative = null; setName += nameSuffix; cancelName += nameSuffix; var tasksByHandleId = {}; function scheduleTask(task) { var data = task.data; function timer() { try { task.invoke.apply(this, arguments); } finally { // issue-934, task will be cancelled // even it is a periodic task such as // setInterval if (!(task.data && task.data.isPeriodic)) { if (typeof data.handleId === 'number') { // in non-nodejs env, we remove timerId // from local cache delete tasksByHandleId[data.handleId]; } else if (data.handleId) { // Node returns complex objects as handleIds // we remove task reference from timer object data.handleId[taskSymbol] = null; } } } } data.args[0] = timer; data.handleId = setNative.apply(window, data.args); return task; } function clearTask(task) { return clearNative(task.data.handleId); } setNative = patchMethod(window, setName, function (delegate) { return function (self, args) { if (typeof args[0] === 'function') { var _options = { isPeriodic: nameSuffix === 'Interval', delay: nameSuffix === 'Timeout' || nameSuffix === 'Interval' ? args[1] || 0 : undefined, args: args }; var task = scheduleMacroTaskWithCurrentZone(setName, args[0], _options, scheduleTask, clearTask); if (!task) { return task; } // Node.js must additionally support the ref and unref functions. var handle = task.data.handleId; if (typeof handle === 'number') { // for non nodejs env, we save handleId: task // mapping in local cache for clearTimeout tasksByHandleId[handle] = task; } else if (handle) { // for nodejs env, we save task // reference in timerId Object for clearTimeout handle[taskSymbol] = task; } // check whether handle is null, because some polyfill or browser // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' && typeof handle.unref === 'function') { task.ref = handle.ref.bind(handle); task.unref = handle.unref.bind(handle); } if (typeof handle === 'number' || handle) { return handle; } return task; } else { // cause an error by calling it directly. return delegate.apply(window, args); } }; }); clearNative = patchMethod(window, cancelName, function (delegate) { return function (self, args) { var id = args[0]; var task; if (typeof id === 'number') { // non nodejs env. task = tasksByHandleId[id]; } else { // nodejs env. task = id && id[taskSymbol]; // other environments. if (!task) { task = id; } } if (task && typeof task.type === 'string') { if (task.state !== 'notScheduled' && (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) { if (typeof id === 'number') { delete tasksByHandleId[id]; } else if (id) { id[taskSymbol] = null; } // Do not cancel already canceled functions task.zone.cancelTask(task); } } else { // cause an error by calling it directly. delegate.apply(window, args); } }; }); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function patchCustomElements(_global, api) { var _api$getGlobalObjects = api.getGlobalObjects(), isBrowser = _api$getGlobalObjects.isBrowser, isMix = _api$getGlobalObjects.isMix; if (!isBrowser && !isMix || !_global['customElements'] || !('customElements' in _global)) { return; } var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; api.patchCallbacks(api, _global.customElements, 'customElements', 'define', callbacks); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function eventTargetPatch(_global, api) { if (Zone[api.symbol('patchEventTarget')]) { // EventTarget is already patched. return; } var _api$getGlobalObjects2 = api.getGlobalObjects(), eventNames = _api$getGlobalObjects2.eventNames, zoneSymbolEventNames = _api$getGlobalObjects2.zoneSymbolEventNames, TRUE_STR = _api$getGlobalObjects2.TRUE_STR, FALSE_STR = _api$getGlobalObjects2.FALSE_STR, ZONE_SYMBOL_PREFIX = _api$getGlobalObjects2.ZONE_SYMBOL_PREFIX; // predefine all __zone_symbol__ + eventName + true/false string for (var i = 0; i < eventNames.length; i++) { var eventName = eventNames[i]; var falseEventName = eventName + FALSE_STR; var trueEventName = eventName + TRUE_STR; var symbol = ZONE_SYMBOL_PREFIX + falseEventName; var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; zoneSymbolEventNames[eventName] = {}; zoneSymbolEventNames[eventName][FALSE_STR] = symbol; zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; } var EVENT_TARGET = _global['EventTarget']; if (!EVENT_TARGET || !EVENT_TARGET.prototype) { return; } api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]); return true; } function patchEvent(global, api) { api.patchEventPrototype(global, api); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ Zone.__load_patch('legacy', function (global) { var legacyPatch = global[Zone.__symbol__('legacyPatch')]; if (legacyPatch) { legacyPatch(); } }); Zone.__load_patch('timers', function (global) { var set = 'set'; var clear = 'clear'; patchTimer(global, set, clear, 'Timeout'); patchTimer(global, set, clear, 'Interval'); patchTimer(global, set, clear, 'Immediate'); }); Zone.__load_patch('requestAnimationFrame', function (global) { patchTimer(global, 'request', 'cancel', 'AnimationFrame'); patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame'); patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame'); }); Zone.__load_patch('blocking', function (global, Zone) { var blockingMethods = ['alert', 'prompt', 'confirm']; for (var i = 0; i < blockingMethods.length; i++) { var name = blockingMethods[i]; patchMethod(global, name, function (delegate, symbol, name) { return function (s, args) { return Zone.current.run(delegate, global, args, name); }; }); } }); Zone.__load_patch('EventTarget', function (global, Zone, api) { patchEvent(global, api); eventTargetPatch(global, api); // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) { api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]); } patchClass('MutationObserver'); patchClass('WebKitMutationObserver'); patchClass('IntersectionObserver'); patchClass('FileReader'); }); Zone.__load_patch('on_property', function (global, Zone, api) { propertyDescriptorPatch(api, global); propertyPatch(); }); Zone.__load_patch('customElements', function (global, Zone, api) { patchCustomElements(global, api); }); Zone.__load_patch('XHR', function (global, Zone) { // Treat XMLHttpRequest as a macrotask. patchXHR(global); var XHR_TASK = zoneSymbol('xhrTask'); var XHR_SYNC = zoneSymbol('xhrSync'); var XHR_LISTENER = zoneSymbol('xhrListener'); var XHR_SCHEDULED = zoneSymbol('xhrScheduled'); var XHR_URL = zoneSymbol('xhrURL'); var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); function patchXHR(window) { var XMLHttpRequest = window['XMLHttpRequest']; if (!XMLHttpRequest) { // XMLHttpRequest is not available in service worker return; } var XMLHttpRequestPrototype = XMLHttpRequest.prototype; function findPendingTask(target) { return target[XHR_TASK]; } var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; if (!oriAddListener) { var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; if (XMLHttpRequestEventTarget) { var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; } } var READY_STATE_CHANGE = 'readystatechange'; var SCHEDULED = 'scheduled'; function scheduleTask(task) { var data = task.data; var target = data.target; target[XHR_SCHEDULED] = false; target[XHR_ERROR_BEFORE_SCHEDULED] = false; // remove existing event listener var listener = target[XHR_LISTENER]; if (!oriAddListener) { oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER]; oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; } if (listener) { oriRemoveListener.call(target, READY_STATE_CHANGE, listener); } var newListener = target[XHR_LISTENER] = function () { if (target.readyState === target.DONE) { // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with // readyState=4 multiple times, so we need to check task state here if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { // check whether the xhr has registered onload listener // if that is the case, the task should invoke after all // onload listeners finish. var loadTasks = target['__zone_symbol__loadfalse']; if (loadTasks && loadTasks.length > 0) { var oriInvoke = task.invoke; task.invoke = function () { // need to load the tasks again, because in other // load listener, they may remove themselves var loadTasks = target['__zone_symbol__loadfalse']; for (var i = 0; i < loadTasks.length; i++) { if (loadTasks[i] === task) { loadTasks.splice(i, 1); } } if (!data.aborted && task.state === SCHEDULED) { oriInvoke.call(task); } }; loadTasks.push(task); } else { task.invoke(); } } else if (!data.aborted && target[XHR_SCHEDULED] === false) { // error occurs when xhr.send() target[XHR_ERROR_BEFORE_SCHEDULED] = true; } } }; oriAddListener.call(target, READY_STATE_CHANGE, newListener); var storedTask = target[XHR_TASK]; if (!storedTask) { target[XHR_TASK] = task; } sendNative.apply(target, data.args); target[XHR_SCHEDULED] = true; return task; } function placeholderCallback() {} function clearTask(task) { var data = task.data; // Note - ideally, we would call data.target.removeEventListener here, but it's too late // to prevent it from firing. So instead, we store info for the event listener. data.aborted = true; return abortNative.apply(data.target, data.args); } var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) { self[XHR_SYNC] = args[2] == false; self[XHR_URL] = args[1]; return openNative.apply(self, args); }; }); var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; var fetchTaskAborting = zoneSymbol('fetchTaskAborting'); var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) { if (Zone.current[fetchTaskScheduling] === true) { // a fetch is scheduling, so we are using xhr to polyfill fetch // and because we already schedule macroTask for fetch, we should // not schedule a macroTask for xhr again return sendNative.apply(self, args); } if (self[XHR_SYNC]) { // if the XHR is sync there is no task to schedule, just execute the code. return sendNative.apply(self, args); } else { var _options2 = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false }; var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, _options2, scheduleTask, clearTask); if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !_options2.aborted && task.state === SCHEDULED) { // xhr request throw error when send // we should invoke task instead of leaving a scheduled // pending macroTask task.invoke(); } } }; }); var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self, args) { var task = findPendingTask(self); if (task && typeof task.type == 'string') { // If the XHR has already completed, do nothing. // If the XHR has already been aborted, do nothing. // Fix #569, call abort multiple times before done will cause // macroTask task count be negative number if (task.cancelFn == null || task.data && task.data.aborted) { return; } task.zone.cancelTask(task); } else if (Zone.current[fetchTaskAborting] === true) { // the abort is called from fetch polyfill, we need to call native abort of XHR. return abortNative.apply(self, args); } // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no // task // to cancel. Do nothing. }; }); } }); Zone.__load_patch('geolocation', function (global) { /// GEO_LOCATION if (global['navigator'] && global['navigator'].geolocation) { patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']); } }); Zone.__load_patch('PromiseRejectionEvent', function (global, Zone) { // handle unhandled promise rejection function findPromiseRejectionHandler(evtName) { return function (e) { var eventTasks = findEventTasks(global, evtName); eventTasks.forEach(function (eventTask) { // windows has added unhandledrejection event listener // trigger the event listener var PromiseRejectionEvent = global['PromiseRejectionEvent']; if (PromiseRejectionEvent) { var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection }); eventTask.invoke(evt); } }); }; } if (global['PromiseRejectionEvent']) { Zone[zoneSymbol('unhandledPromiseRejectionHandler')] = findPromiseRejectionHandler('unhandledrejection'); Zone[zoneSymbol('rejectionHandledHandler')] = findPromiseRejectionHandler('rejectionhandled'); } }); /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /***/ }, /***/ "./node_modules/zone.js/dist/zone-legacy.js": /*!**************************************************!*\ !*** ./node_modules/zone.js/dist/zone-legacy.js ***! \**************************************************/ /*! no static exports found */ /***/ function node_modulesZoneJsDistZoneLegacyJs(module, exports, __webpack_require__) { /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ (function (global, factory) { true ? factory() : undefined; })(this, function () { 'use strict'; /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function eventTargetLegacyPatch(_global, api) { var _a = api.getGlobalObjects(), eventNames = _a.eventNames, globalSources = _a.globalSources, zoneSymbolEventNames = _a.zoneSymbolEventNames, TRUE_STR = _a.TRUE_STR, FALSE_STR = _a.FALSE_STR, ZONE_SYMBOL_PREFIX = _a.ZONE_SYMBOL_PREFIX; var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video'; var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'.split(','); var EVENT_TARGET = 'EventTarget'; var apis = []; var isWtf = _global['wtf']; var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(','); if (isWtf) { // Workaround for: https://github.com/google/tracing-framework/issues/555 apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET); } else if (_global[EVENT_TARGET]) { apis.push(EVENT_TARGET); } else { // Note: EventTarget is not available in all browsers, // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget apis = NO_EVENT_TARGET; } var isDisableIECheck = _global['__Zone_disable_IE_check'] || false; var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false; var ieOrEdge = api.isIEOrEdge(); var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:'; var FUNCTION_WRAPPER = '[object FunctionWrapper]'; var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }'; // predefine all __zone_symbol__ + eventName + true/false string for (var i = 0; i < eventNames.length; i++) { var eventName = eventNames[i]; var falseEventName = eventName + FALSE_STR; var trueEventName = eventName + TRUE_STR; var symbol = ZONE_SYMBOL_PREFIX + falseEventName; var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; zoneSymbolEventNames[eventName] = {}; zoneSymbolEventNames[eventName][FALSE_STR] = symbol; zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture; } // predefine all task.source string for (var i = 0; i < WTF_ISSUE_555.length; i++) { var target = WTF_ISSUE_555_ARRAY[i]; var targets = globalSources[target] = {}; for (var j = 0; j < eventNames.length; j++) { var eventName = eventNames[j]; targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName; } } var checkIEAndCrossContext = function checkIEAndCrossContext(nativeDelegate, delegate, target, args) { if (!isDisableIECheck && ieOrEdge) { if (isEnableCrossContextCheck) { try { var testString = delegate.toString(); if (testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS) { nativeDelegate.apply(target, args); return false; } } catch (error) { nativeDelegate.apply(target, args); return false; } } else { var testString = delegate.toString(); if (testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS) { nativeDelegate.apply(target, args); return false; } } } else if (isEnableCrossContextCheck) { try { delegate.toString(); } catch (error) { nativeDelegate.apply(target, args); return false; } } return true; }; var apiTypes = []; for (var i = 0; i < apis.length; i++) { var type = _global[apis[i]]; apiTypes.push(type && type.prototype); } // vh is validateHandler to check event handler // is valid or not(for security check) api.patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext }); Zone[api.symbol('patchEventTarget')] = !!_global[EVENT_TARGET]; return true; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // we have to patch the instance since the proto is non-configurable function apply(api, _global) { var _a = api.getGlobalObjects(), ADD_EVENT_LISTENER_STR = _a.ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR = _a.REMOVE_EVENT_LISTENER_STR; var WS = _global.WebSocket; // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener // On older Chrome, no need since EventTarget was already patched if (!_global.EventTarget) { api.patchEventTarget(_global, [WS.prototype]); } _global.WebSocket = function (x, y) { var socket = arguments.length > 1 ? new WS(x, y) : new WS(x); var proxySocket; var proxySocketProto; // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance var onmessageDesc = api.ObjectGetOwnPropertyDescriptor(socket, 'onmessage'); if (onmessageDesc && onmessageDesc.configurable === false) { proxySocket = api.ObjectCreate(socket); // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror' // but proxySocket not, so we will keep socket as prototype and pass it to // patchOnProperties method proxySocketProto = socket; [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) { proxySocket[propName] = function () { var args = api.ArraySlice.call(arguments); if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) { var eventName = args.length > 0 ? args[0] : undefined; if (eventName) { var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName); socket[propertySymbol] = proxySocket[propertySymbol]; } } return socket[propName].apply(socket, args); }; }); } else { // we can patch the real socket proxySocket = socket; } api.patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto); return proxySocket; }; var globalWebSocket = _global['WebSocket']; for (var prop in WS) { globalWebSocket[prop] = WS[prop]; } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {globalThis} */ function propertyDescriptorLegacyPatch(api, _global) { var _a = api.getGlobalObjects(), isNode = _a.isNode, isMix = _a.isMix; if (isNode && !isMix) { return; } if (!canPatchViaPropertyDescriptor(api, _global)) { var supportsWebSocket = typeof WebSocket !== 'undefined'; // Safari, Android browsers (Jelly Bean) patchViaCapturingAllTheEvents(api); api.patchClass('XMLHttpRequest'); if (supportsWebSocket) { apply(api, _global); } Zone[api.symbol('patchEvents')] = true; } } function canPatchViaPropertyDescriptor(api, _global) { var _a = api.getGlobalObjects(), isBrowser = _a.isBrowser, isMix = _a.isMix; if ((isBrowser || isMix) && !api.ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') && typeof Element !== 'undefined') { // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364 // IDL interface attributes are not configurable var desc = api.ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick'); if (desc && !desc.configurable) return false; // try to use onclick to detect whether we can patch via propertyDescriptor // because XMLHttpRequest is not available in service worker if (desc) { api.ObjectDefineProperty(Element.prototype, 'onclick', { enumerable: true, configurable: true, get: function get() { return true; } }); var div = document.createElement('div'); var result = !!div.onclick; api.ObjectDefineProperty(Element.prototype, 'onclick', desc); return result; } } var XMLHttpRequest = _global['XMLHttpRequest']; if (!XMLHttpRequest) { // XMLHttpRequest is not available in service worker return false; } var ON_READY_STATE_CHANGE = 'onreadystatechange'; var XMLHttpRequestPrototype = XMLHttpRequest.prototype; var xhrDesc = api.ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE); // add enumerable and configurable here because in opera // by default XMLHttpRequest.prototype.onreadystatechange is undefined // without adding enumerable and configurable will cause onreadystatechange // non-configurable // and if XMLHttpRequest.prototype.onreadystatechange is undefined, // we should set a real desc instead a fake one if (xhrDesc) { api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, { enumerable: true, configurable: true, get: function get() { return true; } }); var req = new XMLHttpRequest(); var result = !!req.onreadystatechange; // restore original desc api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {}); return result; } else { var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = api.symbol('fake'); api.ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, { enumerable: true, configurable: true, get: function get() { return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1]; }, set: function set(value) { this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value; } }); var req = new XMLHttpRequest(); var detectFunc = function detectFunc() {}; req.onreadystatechange = detectFunc; var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc; req.onreadystatechange = null; return result; } } // Whenever any eventListener fires, we check the eventListener target and all parents // for `onwhatever` properties and replace them with zone-bound functions // - Chrome (for now) function patchViaCapturingAllTheEvents(api) { var eventNames = api.getGlobalObjects().eventNames; var unboundKey = api.symbol('unbound'); var _loop_1 = function _loop_1(i) { var property = eventNames[i]; var onproperty = 'on' + property; self.addEventListener(property, function (event) { var elt = event.target, bound, source; if (elt) { source = elt.constructor['name'] + '.' + onproperty; } else { source = 'unknown.' + onproperty; } while (elt) { if (elt[onproperty] && !elt[onproperty][unboundKey]) { bound = api.wrapWithCurrentZone(elt[onproperty], source); bound[unboundKey] = elt[onproperty]; elt[onproperty] = bound; } elt = elt.parentElement; } }, true); }; for (var i = 0; i < eventNames.length; i++) { _loop_1(i); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ function registerElementPatch(_global, api) { var _a = api.getGlobalObjects(), isBrowser = _a.isBrowser, isMix = _a.isMix; if (!isBrowser && !isMix || !('registerElement' in _global.document)) { return; } var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; api.patchCallbacks(api, document, 'Document', 'registerElement', callbacks); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * @fileoverview * @suppress {missingRequire} */ (function (_global) { _global['__zone_symbol__legacyPatch'] = function () { var Zone = _global['Zone']; Zone.__load_patch('registerElement', function (global, Zone, api) { registerElementPatch(global, api); }); Zone.__load_patch('EventTargetLegacy', function (global, Zone, api) { eventTargetLegacyPatch(global, api); propertyDescriptorLegacyPatch(api, global); }); }; })(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); }); /***/ }, /***/ "./src/polyfills.ts": /*!**************************!*\ !*** ./src/polyfills.ts ***! \**************************/ /*! no exports provided */ /***/ function srcPolyfillsTs(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! tslib */ "./node_modules/tslib/tslib.es6.js"); /* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! zone.js/dist/zone */ "./node_modules/zone.js/dist/zone-evergreen.js"); /* harmony import */ var zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n(zone_js_dist_zone__WEBPACK_IMPORTED_MODULE_1__); /** * 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. */ // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS */ /***/ }, /***/ 1: /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** multi ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js zone.js/dist/zone-legacy ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js ./src/polyfills.ts ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ function _(module, exports, __webpack_require__) { __webpack_require__( /*! /Users/alex/Desktop/obscurify3/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js */ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-polyfills.js"); __webpack_require__( /*! zone.js/dist/zone-legacy */ "./node_modules/zone.js/dist/zone-legacy.js"); __webpack_require__( /*! /Users/alex/Desktop/obscurify3/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js */ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); __webpack_require__( /*! /Users/alex/Desktop/obscurify3/node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js */ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/es5-jit-polyfills.js"); module.exports = __webpack_require__( /*! /Users/alex/Desktop/obscurify3/src/polyfills.ts */ "./src/polyfills.ts"); /***/ } }, [[1, "runtime"]]]); //# sourceMappingURL=polyfills-es5.js.map ================================================ FILE: frontend/dist/obscurify3/runtime-es2015.js ================================================ /******/ (function(modules) { // webpackBootstrap /******/ // install a JSONP callback for chunk loading /******/ function webpackJsonpCallback(data) { /******/ var chunkIds = data[0]; /******/ var moreModules = data[1]; /******/ var executeModules = data[2]; /******/ /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; /******/ for(;i < chunkIds.length; i++) { /******/ chunkId = chunkIds[i]; /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { /******/ resolves.push(installedChunks[chunkId][0]); /******/ } /******/ installedChunks[chunkId] = 0; /******/ } /******/ for(moduleId in moreModules) { /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { /******/ modules[moduleId] = moreModules[moduleId]; /******/ } /******/ } /******/ if(parentJsonpFunction) parentJsonpFunction(data); /******/ /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } /******/ /******/ // add entry modules from loaded chunk to deferred list /******/ deferredModules.push.apply(deferredModules, executeModules || []); /******/ /******/ // run deferred modules when all chunks ready /******/ return checkDeferredModules(); /******/ }; /******/ function checkDeferredModules() { /******/ var result; /******/ for(var i = 0; i < deferredModules.length; i++) { /******/ var deferredModule = deferredModules[i]; /******/ var fulfilled = true; /******/ for(var j = 1; j < deferredModule.length; j++) { /******/ var depId = deferredModule[j]; /******/ if(installedChunks[depId] !== 0) fulfilled = false; /******/ } /******/ if(fulfilled) { /******/ deferredModules.splice(i--, 1); /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); /******/ } /******/ } /******/ /******/ return result; /******/ } /******/ /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded /******/ var installedChunks = { /******/ "runtime": 0 /******/ }; /******/ /******/ var deferredModules = []; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); /******/ jsonpArray.push = webpackJsonpCallback; /******/ jsonpArray = jsonpArray.slice(); /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); /******/ var parentJsonpFunction = oldJsonpFunction; /******/ /******/ /******/ // run deferred modules from other chunks /******/ checkDeferredModules(); /******/ }) /************************************************************************/ /******/ ([]); ================================================ FILE: frontend/dist/obscurify3/runtime-es5.js ================================================ /******/ (function(modules) { // webpackBootstrap /******/ // install a JSONP callback for chunk loading /******/ function webpackJsonpCallback(data) { /******/ var chunkIds = data[0]; /******/ var moreModules = data[1]; /******/ var executeModules = data[2]; /******/ /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; /******/ for(;i < chunkIds.length; i++) { /******/ chunkId = chunkIds[i]; /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { /******/ resolves.push(installedChunks[chunkId][0]); /******/ } /******/ installedChunks[chunkId] = 0; /******/ } /******/ for(moduleId in moreModules) { /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { /******/ modules[moduleId] = moreModules[moduleId]; /******/ } /******/ } /******/ if(parentJsonpFunction) parentJsonpFunction(data); /******/ /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } /******/ /******/ // add entry modules from loaded chunk to deferred list /******/ deferredModules.push.apply(deferredModules, executeModules || []); /******/ /******/ // run deferred modules when all chunks ready /******/ return checkDeferredModules(); /******/ }; /******/ function checkDeferredModules() { /******/ var result; /******/ for(var i = 0; i < deferredModules.length; i++) { /******/ var deferredModule = deferredModules[i]; /******/ var fulfilled = true; /******/ for(var j = 1; j < deferredModule.length; j++) { /******/ var depId = deferredModule[j]; /******/ if(installedChunks[depId] !== 0) fulfilled = false; /******/ } /******/ if(fulfilled) { /******/ deferredModules.splice(i--, 1); /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); /******/ } /******/ } /******/ /******/ return result; /******/ } /******/ /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded /******/ var installedChunks = { /******/ "runtime": 0 /******/ }; /******/ /******/ var deferredModules = []; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); /******/ jsonpArray.push = webpackJsonpCallback; /******/ jsonpArray = jsonpArray.slice(); /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); /******/ var parentJsonpFunction = oldJsonpFunction; /******/ /******/ /******/ // run deferred modules from other chunks /******/ checkDeferredModules(); /******/ }) /************************************************************************/ /******/ ([]); //# sourceMappingURL=runtime-es5.js.map ================================================ FILE: frontend/dist/obscurify3/styles-es2015.js ================================================ (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["styles"],{ /***/ "./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/lib/loader.js?!./src/styles.scss": /*!**********************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./node_modules/sass-loader/lib/loader.js??ref--15-3!./src/styles.scss ***! \**********************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = [[module.i, "/* Theme for the ripple elements.*/\n/* stylelint-disable material/no-prefixes */\n/* stylelint-enable */\n.mat-badge-content {\n font-weight: 600;\n font-size: 12px;\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-badge-small .mat-badge-content {\n font-size: 9px;\n}\n.mat-badge-large .mat-badge-content {\n font-size: 24px;\n}\n.mat-h1, .mat-headline, .mat-typography h1 {\n font: 400 24px/32px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 16px;\n}\n.mat-h2, .mat-title, .mat-typography h2 {\n font: 500 20px/32px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 16px;\n}\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\n font: 400 16px/28px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 16px;\n}\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\n font: 400 15px/24px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 16px;\n}\n.mat-h5, .mat-typography h5 {\n font: 400 calc(14px * 0.83)/20px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 12px;\n}\n.mat-h6, .mat-typography h6 {\n font: 400 calc(14px * 0.67)/20px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 12px;\n}\n.mat-body-strong, .mat-body-2 {\n font: 500 14px/24px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-body, .mat-body-1, .mat-typography {\n font: 400 14px/20px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-body p, .mat-body-1 p, .mat-typography p {\n margin: 0 0 12px;\n}\n.mat-small, .mat-caption {\n font: 400 12px/20px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-display-4, .mat-typography .mat-display-4 {\n font: 300 112px/112px Roboto, \"Helvetica Neue\", sans-serif;\n letter-spacing: -0.05em;\n margin: 0 0 56px;\n}\n.mat-display-3, .mat-typography .mat-display-3 {\n font: 400 56px/56px Roboto, \"Helvetica Neue\", sans-serif;\n letter-spacing: -0.02em;\n margin: 0 0 64px;\n}\n.mat-display-2, .mat-typography .mat-display-2 {\n font: 400 45px/48px Roboto, \"Helvetica Neue\", sans-serif;\n letter-spacing: -0.005em;\n margin: 0 0 64px;\n}\n.mat-display-1, .mat-typography .mat-display-1 {\n font: 400 34px/40px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0 0 64px;\n}\n.mat-bottom-sheet-container {\n font: 400 14px/20px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\n.mat-flat-button, .mat-fab, .mat-mini-fab {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n}\n.mat-button-toggle {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-card {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-card-title {\n font-size: 24px;\n font-weight: 500;\n}\n.mat-card-header .mat-card-title {\n font-size: 20px;\n}\n.mat-card-subtitle,\n.mat-card-content {\n font-size: 14px;\n}\n.mat-checkbox {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-checkbox-layout .mat-checkbox-label {\n line-height: 24px;\n}\n.mat-chip {\n font-size: 14px;\n font-weight: 500;\n}\n.mat-chip .mat-chip-trailing-icon.mat-icon,\n.mat-chip .mat-chip-remove.mat-icon {\n font-size: 18px;\n}\n.mat-table {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-header-cell {\n font-size: 12px;\n font-weight: 500;\n}\n.mat-cell, .mat-footer-cell {\n font-size: 14px;\n}\n.mat-calendar {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-calendar-body {\n font-size: 13px;\n}\n.mat-calendar-body-label,\n.mat-calendar-period-button {\n font-size: 14px;\n font-weight: 500;\n}\n.mat-calendar-table-header th {\n font-size: 11px;\n font-weight: 400;\n}\n.mat-dialog-title {\n font: 500 20px/32px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-expansion-panel-header {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 15px;\n font-weight: 400;\n}\n.mat-expansion-panel-content {\n font: 400 14px/20px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-form-field {\n font-size: inherit;\n font-weight: 400;\n line-height: 1.125;\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-form-field-wrapper {\n padding-bottom: 1.34375em;\n}\n.mat-form-field-prefix .mat-icon,\n.mat-form-field-suffix .mat-icon {\n font-size: 150%;\n line-height: 1.125;\n}\n.mat-form-field-prefix .mat-icon-button,\n.mat-form-field-suffix .mat-icon-button {\n height: 1.5em;\n width: 1.5em;\n}\n.mat-form-field-prefix .mat-icon-button .mat-icon,\n.mat-form-field-suffix .mat-icon-button .mat-icon {\n height: 1.125em;\n line-height: 1.125;\n}\n.mat-form-field-infix {\n padding: 0.5em 0;\n border-top: 0.84375em solid transparent;\n}\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.34375em) scale(0.75);\n width: 133.3333333333%;\n}\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.34374em) scale(0.75);\n width: 133.3333433333%;\n}\n.mat-form-field-label-wrapper {\n top: -0.84375em;\n padding-top: 0.84375em;\n}\n.mat-form-field-label {\n top: 1.34375em;\n}\n.mat-form-field-underline {\n bottom: 1.34375em;\n}\n.mat-form-field-subscript-wrapper {\n font-size: 75%;\n margin-top: 0.6666666667em;\n top: calc(100% - 1.7916666667em);\n}\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\n padding-bottom: 1.25em;\n}\n.mat-form-field-appearance-legacy .mat-form-field-infix {\n padding: 0.4375em 0;\n}\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\n -ms-transform: translateY(-1.28125em) scale(0.75);\n width: 133.3333333333%;\n}\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\n -ms-transform: translateY(-1.28124em) scale(0.75);\n width: 133.3333433333%;\n}\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\n -ms-transform: translateY(-1.28123em) scale(0.75);\n width: 133.3333533333%;\n}\n.mat-form-field-appearance-legacy .mat-form-field-label {\n top: 1.28125em;\n}\n.mat-form-field-appearance-legacy .mat-form-field-underline {\n bottom: 1.25em;\n}\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\n margin-top: 0.5416666667em;\n top: calc(100% - 1.6666666667em);\n}\n@media print {\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.28122em) scale(0.75);\n }\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.28121em) scale(0.75);\n }\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.2812em) scale(0.75);\n }\n}\n.mat-form-field-appearance-fill .mat-form-field-infix {\n padding: 0.25em 0 0.75em 0;\n}\n.mat-form-field-appearance-fill .mat-form-field-label {\n top: 1.09375em;\n margin-top: -0.5em;\n}\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-0.59375em) scale(0.75);\n width: 133.3333333333%;\n}\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-0.59374em) scale(0.75);\n width: 133.3333433333%;\n}\n.mat-form-field-appearance-outline .mat-form-field-infix {\n padding: 1em 0 1em 0;\n}\n.mat-form-field-appearance-outline .mat-form-field-label {\n top: 1.84375em;\n margin-top: -0.25em;\n}\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.59375em) scale(0.75);\n width: 133.3333333333%;\n}\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\n transform: translateY(-1.59374em) scale(0.75);\n width: 133.3333433333%;\n}\n.mat-grid-tile-header,\n.mat-grid-tile-footer {\n font-size: 14px;\n}\n.mat-grid-tile-header .mat-line,\n.mat-grid-tile-footer .mat-line {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n box-sizing: border-box;\n}\n.mat-grid-tile-header .mat-line:nth-child(n+2),\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\n font-size: 12px;\n}\ninput.mat-input-element {\n margin-top: -0.0625em;\n}\n.mat-menu-item {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-weight: 400;\n}\n.mat-paginator,\n.mat-paginator-page-size .mat-select-trigger {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 12px;\n}\n.mat-radio-button {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-select {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-select-trigger {\n height: 1.125em;\n}\n.mat-slide-toggle-content {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-slider-thumb-label-text {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 12px;\n font-weight: 500;\n}\n.mat-stepper-vertical, .mat-stepper-horizontal {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-step-label {\n font-size: 14px;\n font-weight: 400;\n}\n.mat-step-sub-label-error {\n font-weight: normal;\n}\n.mat-step-label-error {\n font-size: 14px;\n}\n.mat-step-label-selected {\n font-size: 14px;\n font-weight: 500;\n}\n.mat-tab-group {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-tab-label, .mat-tab-link {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n}\n.mat-toolbar,\n.mat-toolbar h1,\n.mat-toolbar h2,\n.mat-toolbar h3,\n.mat-toolbar h4,\n.mat-toolbar h5,\n.mat-toolbar h6 {\n font: 500 20px/32px Roboto, \"Helvetica Neue\", sans-serif;\n margin: 0;\n}\n.mat-tooltip {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 10px;\n padding-top: 6px;\n padding-bottom: 6px;\n}\n.mat-tooltip-handset {\n font-size: 14px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.mat-list-item {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-list-option {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-list-base .mat-list-item {\n font-size: 16px;\n}\n.mat-list-base .mat-list-item .mat-line {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n box-sizing: border-box;\n}\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\n font-size: 14px;\n}\n.mat-list-base .mat-list-option {\n font-size: 16px;\n}\n.mat-list-base .mat-list-option .mat-line {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n box-sizing: border-box;\n}\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\n font-size: 14px;\n}\n.mat-list-base .mat-subheader {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-weight: 500;\n}\n.mat-list-base[dense] .mat-list-item {\n font-size: 12px;\n}\n.mat-list-base[dense] .mat-list-item .mat-line {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n box-sizing: border-box;\n}\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\n font-size: 12px;\n}\n.mat-list-base[dense] .mat-list-option {\n font-size: 12px;\n}\n.mat-list-base[dense] .mat-list-option .mat-line {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n box-sizing: border-box;\n}\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\n font-size: 12px;\n}\n.mat-list-base[dense] .mat-subheader {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 12px;\n font-weight: 500;\n}\n.mat-option {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n}\n.mat-optgroup-label {\n font: 500 14px/24px Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-simple-snackbar {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n}\n.mat-simple-snackbar-action {\n line-height: 1;\n font-family: inherit;\n font-size: inherit;\n font-weight: 500;\n}\n.mat-tree {\n font-family: Roboto, \"Helvetica Neue\", sans-serif;\n}\n.mat-tree-node,\n.mat-nested-tree-node {\n font-weight: 400;\n font-size: 14px;\n}\n.mat-ripple {\n overflow: hidden;\n position: relative;\n}\n.mat-ripple.mat-ripple-unbounded {\n overflow: visible;\n}\n.mat-ripple-element {\n position: absolute;\n border-radius: 50%;\n pointer-events: none;\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\n transform: scale(0);\n}\n@media (-ms-high-contrast: active) {\n .mat-ripple-element {\n display: none;\n }\n}\n.cdk-visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n outline: 0;\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\n pointer-events: none;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n}\n.cdk-overlay-container {\n position: fixed;\n z-index: 1000;\n}\n.cdk-overlay-container:empty {\n display: none;\n}\n.cdk-global-overlay-wrapper {\n display: flex;\n position: absolute;\n z-index: 1000;\n}\n.cdk-overlay-pane {\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n z-index: 1000;\n display: flex;\n max-width: 100%;\n max-height: 100%;\n}\n.cdk-overlay-backdrop {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1000;\n pointer-events: auto;\n -webkit-tap-highlight-color: transparent;\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\n opacity: 0;\n}\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\n opacity: 1;\n}\n@media screen and (-ms-high-contrast: active) {\n .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\n opacity: 0.6;\n }\n}\n.cdk-overlay-dark-backdrop {\n background: rgba(0, 0, 0, 0.32);\n}\n.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\n opacity: 0;\n}\n.cdk-overlay-connected-position-bounding-box {\n position: absolute;\n z-index: 1000;\n display: flex;\n flex-direction: column;\n min-width: 1px;\n min-height: 1px;\n}\n.cdk-global-scrollblock {\n position: fixed;\n width: 100%;\n overflow-y: scroll;\n}\n@-webkit-keyframes cdk-text-field-autofill-start {\n /*!*/\n}\n@keyframes cdk-text-field-autofill-start {\n /*!*/\n}\n@-webkit-keyframes cdk-text-field-autofill-end {\n /*!*/\n}\n@keyframes cdk-text-field-autofill-end {\n /*!*/\n}\n.cdk-text-field-autofill-monitored:-webkit-autofill {\n -webkit-animation-name: cdk-text-field-autofill-start;\n animation-name: cdk-text-field-autofill-start;\n}\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\n -webkit-animation-name: cdk-text-field-autofill-end;\n animation-name: cdk-text-field-autofill-end;\n}\ntextarea.cdk-textarea-autosize {\n resize: none;\n}\ntextarea.cdk-textarea-autosize-measuring {\n height: auto !important;\n overflow: hidden !important;\n padding: 2px 0 !important;\n box-sizing: content-box !important;\n}\n.mat-ripple-element {\n background-color: rgba(0, 0, 0, 0.1);\n}\n.mat-option {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) {\n background: rgba(0, 0, 0, 0.04);\n}\n.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\n background: rgba(0, 0, 0, 0.04);\n}\n.mat-option.mat-active {\n background: rgba(0, 0, 0, 0.04);\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-option.mat-option-disabled {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\n color: #3f51b5;\n}\n.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\n color: #ff4081;\n}\n.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\n color: #f44336;\n}\n.mat-optgroup-label {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-optgroup-disabled .mat-optgroup-label {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-pseudo-checkbox {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-pseudo-checkbox::after {\n color: #fafafa;\n}\n.mat-pseudo-checkbox-disabled {\n color: #b0b0b0;\n}\n.mat-primary .mat-pseudo-checkbox-checked,\n.mat-primary .mat-pseudo-checkbox-indeterminate {\n background: #3f51b5;\n}\n.mat-pseudo-checkbox-checked,\n.mat-pseudo-checkbox-indeterminate,\n.mat-accent .mat-pseudo-checkbox-checked,\n.mat-accent .mat-pseudo-checkbox-indeterminate {\n background: #ff4081;\n}\n.mat-warn .mat-pseudo-checkbox-checked,\n.mat-warn .mat-pseudo-checkbox-indeterminate {\n background: #f44336;\n}\n.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\n.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\n background: #b0b0b0;\n}\n.mat-elevation-z0 {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z1 {\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z2 {\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z3 {\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z4 {\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z5 {\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z6 {\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z7 {\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z8 {\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z9 {\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z10 {\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z11 {\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z12 {\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z13 {\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z14 {\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z15 {\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z16 {\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z17 {\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z18 {\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z19 {\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z20 {\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z21 {\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z22 {\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z23 {\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\n}\n.mat-elevation-z24 {\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n}\n.mat-app-background {\n background-color: #fafafa;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-theme-loaded-marker {\n display: none;\n}\n.mat-autocomplete-panel {\n background: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-autocomplete-panel:not([class*=mat-elevation-z]) {\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\n background: white;\n}\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-badge-content {\n color: white;\n background: #3f51b5;\n}\n@media (-ms-high-contrast: active) {\n .mat-badge-content {\n outline: solid 1px;\n border-radius: 0;\n }\n}\n.mat-badge-accent .mat-badge-content {\n background: #ff4081;\n color: white;\n}\n.mat-badge-warn .mat-badge-content {\n color: white;\n background: #f44336;\n}\n.mat-badge {\n position: relative;\n}\n.mat-badge-hidden .mat-badge-content {\n display: none;\n}\n.mat-badge-disabled .mat-badge-content {\n background: #b9b9b9;\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-badge-content {\n position: absolute;\n text-align: center;\n display: inline-block;\n border-radius: 50%;\n transition: transform 200ms ease-in-out;\n transform: scale(0.6);\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n pointer-events: none;\n}\n.ng-animate-disabled .mat-badge-content,\n.mat-badge-content._mat-animation-noopable {\n transition: none;\n}\n.mat-badge-content.mat-badge-active {\n transform: none;\n}\n.mat-badge-small .mat-badge-content {\n width: 16px;\n height: 16px;\n line-height: 16px;\n}\n.mat-badge-small.mat-badge-above .mat-badge-content {\n top: -8px;\n}\n.mat-badge-small.mat-badge-below .mat-badge-content {\n bottom: -8px;\n}\n.mat-badge-small.mat-badge-before .mat-badge-content {\n left: -16px;\n}\n[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content {\n left: auto;\n right: -16px;\n}\n.mat-badge-small.mat-badge-after .mat-badge-content {\n right: -16px;\n}\n[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content {\n right: auto;\n left: -16px;\n}\n.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\n left: -8px;\n}\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\n left: auto;\n right: -8px;\n}\n.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\n right: -8px;\n}\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\n right: auto;\n left: -8px;\n}\n.mat-badge-medium .mat-badge-content {\n width: 22px;\n height: 22px;\n line-height: 22px;\n}\n.mat-badge-medium.mat-badge-above .mat-badge-content {\n top: -11px;\n}\n.mat-badge-medium.mat-badge-below .mat-badge-content {\n bottom: -11px;\n}\n.mat-badge-medium.mat-badge-before .mat-badge-content {\n left: -22px;\n}\n[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content {\n left: auto;\n right: -22px;\n}\n.mat-badge-medium.mat-badge-after .mat-badge-content {\n right: -22px;\n}\n[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content {\n right: auto;\n left: -22px;\n}\n.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\n left: -11px;\n}\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\n left: auto;\n right: -11px;\n}\n.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\n right: -11px;\n}\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\n right: auto;\n left: -11px;\n}\n.mat-badge-large .mat-badge-content {\n width: 28px;\n height: 28px;\n line-height: 28px;\n}\n.mat-badge-large.mat-badge-above .mat-badge-content {\n top: -14px;\n}\n.mat-badge-large.mat-badge-below .mat-badge-content {\n bottom: -14px;\n}\n.mat-badge-large.mat-badge-before .mat-badge-content {\n left: -28px;\n}\n[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content {\n left: auto;\n right: -28px;\n}\n.mat-badge-large.mat-badge-after .mat-badge-content {\n right: -28px;\n}\n[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content {\n right: auto;\n left: -28px;\n}\n.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\n left: -14px;\n}\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\n left: auto;\n right: -14px;\n}\n.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\n right: -14px;\n}\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\n right: auto;\n left: -14px;\n}\n.mat-bottom-sheet-container {\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\n background: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-button, .mat-icon-button, .mat-stroked-button {\n color: inherit;\n background: transparent;\n}\n.mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary {\n color: #3f51b5;\n}\n.mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent {\n color: #ff4081;\n}\n.mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn {\n color: #f44336;\n}\n.mat-button.mat-primary[disabled], .mat-button.mat-accent[disabled], .mat-button.mat-warn[disabled], .mat-button[disabled][disabled], .mat-icon-button.mat-primary[disabled], .mat-icon-button.mat-accent[disabled], .mat-icon-button.mat-warn[disabled], .mat-icon-button[disabled][disabled], .mat-stroked-button.mat-primary[disabled], .mat-stroked-button.mat-accent[disabled], .mat-stroked-button.mat-warn[disabled], .mat-stroked-button[disabled][disabled] {\n color: rgba(0, 0, 0, 0.26);\n}\n.mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay {\n background-color: #3f51b5;\n}\n.mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay {\n background-color: #ff4081;\n}\n.mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay {\n background-color: #f44336;\n}\n.mat-button[disabled] .mat-button-focus-overlay, .mat-icon-button[disabled] .mat-button-focus-overlay, .mat-stroked-button[disabled] .mat-button-focus-overlay {\n background-color: transparent;\n}\n.mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element {\n opacity: 0.1;\n background-color: currentColor;\n}\n.mat-button-focus-overlay {\n background: black;\n}\n.mat-stroked-button:not([disabled]) {\n border-color: rgba(0, 0, 0, 0.12);\n}\n.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\n color: rgba(0, 0, 0, 0.87);\n background-color: white;\n}\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\n color: white;\n}\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\n color: white;\n}\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\n color: white;\n}\n.mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] {\n color: rgba(0, 0, 0, 0.26);\n}\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\n background-color: #3f51b5;\n}\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\n background-color: #ff4081;\n}\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\n background-color: #f44336;\n}\n.mat-flat-button.mat-primary[disabled], .mat-flat-button.mat-accent[disabled], .mat-flat-button.mat-warn[disabled], .mat-flat-button[disabled][disabled], .mat-raised-button.mat-primary[disabled], .mat-raised-button.mat-accent[disabled], .mat-raised-button.mat-warn[disabled], .mat-raised-button[disabled][disabled], .mat-fab.mat-primary[disabled], .mat-fab.mat-accent[disabled], .mat-fab.mat-warn[disabled], .mat-fab[disabled][disabled], .mat-mini-fab.mat-primary[disabled], .mat-mini-fab.mat-accent[disabled], .mat-mini-fab.mat-warn[disabled], .mat-mini-fab[disabled][disabled] {\n background-color: rgba(0, 0, 0, 0.12);\n}\n.mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element {\n background-color: rgba(255, 255, 255, 0.1);\n}\n.mat-stroked-button:not([class*=mat-elevation-z]), .mat-flat-button:not([class*=mat-elevation-z]) {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-raised-button:not([class*=mat-elevation-z]) {\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-raised-button:not([disabled]):active:not([class*=mat-elevation-z]) {\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.mat-raised-button[disabled]:not([class*=mat-elevation-z]) {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-fab:not([class*=mat-elevation-z]), .mat-mini-fab:not([class*=mat-elevation-z]) {\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]), .mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]) {\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\n}\n.mat-fab[disabled]:not([class*=mat-elevation-z]), .mat-mini-fab[disabled]:not([class*=mat-elevation-z]) {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-button-toggle-standalone,\n.mat-button-toggle-group {\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\n.mat-button-toggle-group-appearance-standard {\n box-shadow: none;\n}\n.mat-button-toggle {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-button-toggle .mat-button-toggle-focus-overlay {\n background-color: rgba(0, 0, 0, 0.12);\n}\n.mat-button-toggle-appearance-standard {\n color: rgba(0, 0, 0, 0.87);\n background: white;\n}\n.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\n background-color: black;\n}\n.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\n border-left: solid 1px rgba(0, 0, 0, 0.12);\n}\n[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\n border-left: none;\n border-right: solid 1px rgba(0, 0, 0, 0.12);\n}\n.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\n border-left: none;\n border-right: none;\n border-top: solid 1px rgba(0, 0, 0, 0.12);\n}\n.mat-button-toggle-checked {\n background-color: #e0e0e0;\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-button-toggle-checked.mat-button-toggle-appearance-standard {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-button-toggle-disabled {\n color: rgba(0, 0, 0, 0.26);\n background-color: #eeeeee;\n}\n.mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\n background: white;\n}\n.mat-button-toggle-disabled.mat-button-toggle-checked {\n background-color: #bdbdbd;\n}\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\n.mat-button-toggle-group-appearance-standard {\n border: solid 1px rgba(0, 0, 0, 0.12);\n}\n.mat-card {\n background: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-card:not([class*=mat-elevation-z]) {\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-card-subtitle {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-checkbox-frame {\n border-color: rgba(0, 0, 0, 0.54);\n}\n.mat-checkbox-checkmark {\n fill: #fafafa;\n}\n.mat-checkbox-checkmark-path {\n stroke: #fafafa !important;\n}\n@media (-ms-high-contrast: black-on-white) {\n .mat-checkbox-checkmark-path {\n stroke: #000 !important;\n }\n}\n.mat-checkbox-mixedmark {\n background-color: #fafafa;\n}\n.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background {\n background-color: #3f51b5;\n}\n.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {\n background-color: #ff4081;\n}\n.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background {\n background-color: #f44336;\n}\n.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\n background-color: #b0b0b0;\n}\n.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\n border-color: #b0b0b0;\n}\n.mat-checkbox-disabled .mat-checkbox-label {\n color: rgba(0, 0, 0, 0.54);\n}\n@media (-ms-high-contrast: active) {\n .mat-checkbox-disabled {\n opacity: 0.5;\n }\n}\n@media (-ms-high-contrast: active) {\n .mat-checkbox-background {\n background: none;\n }\n}\n.mat-checkbox .mat-ripple-element {\n background-color: black;\n}\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\n background: #3f51b5;\n}\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\n background: #ff4081;\n}\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\n background: #f44336;\n}\n.mat-chip.mat-standard-chip {\n background-color: #e0e0e0;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-chip.mat-standard-chip .mat-chip-remove {\n color: rgba(0, 0, 0, 0.87);\n opacity: 0.4;\n}\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\n opacity: 0.54;\n}\n.mat-chip.mat-standard-chip.mat-chip-disabled {\n opacity: 0.4;\n}\n.mat-chip.mat-standard-chip::after {\n background: black;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\n background-color: #3f51b5;\n color: white;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\n color: white;\n opacity: 0.4;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\n background: rgba(255, 255, 255, 0.1);\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\n background-color: #f44336;\n color: white;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\n color: white;\n opacity: 0.4;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\n background: rgba(255, 255, 255, 0.1);\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\n background-color: #ff4081;\n color: white;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\n color: white;\n opacity: 0.4;\n}\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\n background: rgba(255, 255, 255, 0.1);\n}\n.mat-table {\n background: white;\n}\n.mat-table thead, .mat-table tbody, .mat-table tfoot,\nmat-header-row, mat-row, mat-footer-row,\n[mat-header-row], [mat-row], [mat-footer-row],\n.mat-table-sticky {\n background: inherit;\n}\nmat-row, mat-header-row, mat-footer-row,\nth.mat-header-cell, td.mat-cell, td.mat-footer-cell {\n border-bottom-color: rgba(0, 0, 0, 0.12);\n}\n.mat-header-cell {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-cell, .mat-footer-cell {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-calendar-arrow {\n border-top-color: rgba(0, 0, 0, 0.54);\n}\n.mat-datepicker-toggle,\n.mat-datepicker-content .mat-calendar-next-button,\n.mat-datepicker-content .mat-calendar-previous-button {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-calendar-table-header {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-calendar-table-header-divider::after {\n background: rgba(0, 0, 0, 0.12);\n}\n.mat-calendar-body-label {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-calendar-body-cell-content {\n color: rgba(0, 0, 0, 0.87);\n border-color: transparent;\n}\n.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected),\n.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected),\n.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) {\n background-color: rgba(0, 0, 0, 0.04);\n}\n.mat-calendar-body-today:not(.mat-calendar-body-selected) {\n border-color: rgba(0, 0, 0, 0.38);\n}\n.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) {\n border-color: rgba(0, 0, 0, 0.18);\n}\n.mat-calendar-body-selected {\n background-color: #3f51b5;\n color: white;\n}\n.mat-calendar-body-disabled > .mat-calendar-body-selected {\n background-color: rgba(63, 81, 181, 0.4);\n}\n.mat-calendar-body-today.mat-calendar-body-selected {\n box-shadow: inset 0 0 0 1px white;\n}\n.mat-datepicker-content {\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n background-color: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-datepicker-content.mat-accent .mat-calendar-body-selected {\n background-color: #ff4081;\n color: white;\n}\n.mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\n background-color: rgba(255, 64, 129, 0.4);\n}\n.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\n box-shadow: inset 0 0 0 1px white;\n}\n.mat-datepicker-content.mat-warn .mat-calendar-body-selected {\n background-color: #f44336;\n color: white;\n}\n.mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\n background-color: rgba(244, 67, 54, 0.4);\n}\n.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\n box-shadow: inset 0 0 0 1px white;\n}\n.mat-datepicker-content-touch {\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-datepicker-toggle-active {\n color: #3f51b5;\n}\n.mat-datepicker-toggle-active.mat-accent {\n color: #ff4081;\n}\n.mat-datepicker-toggle-active.mat-warn {\n color: #f44336;\n}\n.mat-dialog-container {\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\n background: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-divider {\n border-top-color: rgba(0, 0, 0, 0.12);\n}\n.mat-divider-vertical {\n border-right-color: rgba(0, 0, 0, 0.12);\n}\n.mat-expansion-panel {\n background: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-expansion-panel:not([class*=mat-elevation-z]) {\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-action-row {\n border-top-color: rgba(0, 0, 0, 0.12);\n}\n.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\n background: rgba(0, 0, 0, 0.04);\n}\n@media (hover: none) {\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\n background: white;\n }\n}\n.mat-expansion-panel-header-title {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-expansion-panel-header-description,\n.mat-expansion-indicator::after {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-expansion-panel-header[aria-disabled=true] {\n color: rgba(0, 0, 0, 0.26);\n}\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\n color: inherit;\n}\n.mat-form-field-label {\n color: rgba(0, 0, 0, 0.6);\n}\n.mat-hint {\n color: rgba(0, 0, 0, 0.6);\n}\n.mat-form-field.mat-focused .mat-form-field-label {\n color: #3f51b5;\n}\n.mat-form-field.mat-focused .mat-form-field-label.mat-accent {\n color: #ff4081;\n}\n.mat-form-field.mat-focused .mat-form-field-label.mat-warn {\n color: #f44336;\n}\n.mat-focused .mat-form-field-required-marker {\n color: #ff4081;\n}\n.mat-form-field-ripple {\n background-color: rgba(0, 0, 0, 0.87);\n}\n.mat-form-field.mat-focused .mat-form-field-ripple {\n background-color: #3f51b5;\n}\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\n background-color: #ff4081;\n}\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\n background-color: #f44336;\n}\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\n color: #3f51b5;\n}\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\n color: #ff4081;\n}\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\n color: #f44336;\n}\n.mat-form-field.mat-form-field-invalid .mat-form-field-label {\n color: #f44336;\n}\n.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\n.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\n color: #f44336;\n}\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\n background-color: #f44336;\n}\n.mat-error {\n color: #f44336;\n}\n.mat-form-field-appearance-legacy .mat-form-field-label {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-form-field-appearance-legacy .mat-hint {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-form-field-appearance-legacy .mat-form-field-underline {\n background-color: rgba(0, 0, 0, 0.42);\n}\n.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\n background-size: 4px 100%;\n background-repeat: repeat-x;\n}\n.mat-form-field-appearance-standard .mat-form-field-underline {\n background-color: rgba(0, 0, 0, 0.42);\n}\n.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\n background-size: 4px 100%;\n background-repeat: repeat-x;\n}\n.mat-form-field-appearance-fill .mat-form-field-flex {\n background-color: rgba(0, 0, 0, 0.04);\n}\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\n background-color: rgba(0, 0, 0, 0.02);\n}\n.mat-form-field-appearance-fill .mat-form-field-underline::before {\n background-color: rgba(0, 0, 0, 0.42);\n}\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\n background-color: transparent;\n}\n.mat-form-field-appearance-outline .mat-form-field-outline {\n color: rgba(0, 0, 0, 0.12);\n}\n.mat-form-field-appearance-outline .mat-form-field-outline-thick {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\n color: #3f51b5;\n}\n.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\n color: #ff4081;\n}\n.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\n color: #f44336;\n}\n.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\n color: #f44336;\n}\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\n color: rgba(0, 0, 0, 0.06);\n}\n.mat-icon.mat-primary {\n color: #3f51b5;\n}\n.mat-icon.mat-accent {\n color: #ff4081;\n}\n.mat-icon.mat-warn {\n color: #f44336;\n}\n.mat-form-field-type-mat-native-select .mat-form-field-infix::after {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-input-element:disabled,\n.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-input-element {\n caret-color: #3f51b5;\n}\n.mat-input-element::-webkit-input-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-input-element::-moz-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-input-element::-ms-input-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-input-element::placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-input-element::-moz-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-input-element::-webkit-input-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-input-element:-ms-input-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-accent .mat-input-element {\n caret-color: #ff4081;\n}\n.mat-warn .mat-input-element,\n.mat-form-field-invalid .mat-input-element {\n caret-color: #f44336;\n}\n.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\n color: #f44336;\n}\n.mat-list-base .mat-list-item {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-list-base .mat-list-option {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-list-base .mat-subheader {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-list-item-disabled {\n background-color: #eeeeee;\n}\n.mat-list-option:hover, .mat-list-option:focus,\n.mat-nav-list .mat-list-item:hover,\n.mat-nav-list .mat-list-item:focus,\n.mat-action-list .mat-list-item:hover,\n.mat-action-list .mat-list-item:focus {\n background: rgba(0, 0, 0, 0.04);\n}\n.mat-menu-panel {\n background: white;\n}\n.mat-menu-panel:not([class*=mat-elevation-z]) {\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-menu-item {\n background: transparent;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-menu-item[disabled], .mat-menu-item[disabled]::after {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-menu-item .mat-icon-no-color,\n.mat-menu-item-submenu-trigger::after {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-menu-item:hover:not([disabled]),\n.mat-menu-item.cdk-program-focused:not([disabled]),\n.mat-menu-item.cdk-keyboard-focused:not([disabled]),\n.mat-menu-item-highlighted:not([disabled]) {\n background: rgba(0, 0, 0, 0.04);\n}\n.mat-paginator {\n background: white;\n}\n.mat-paginator,\n.mat-paginator-page-size .mat-select-trigger {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-paginator-decrement,\n.mat-paginator-increment {\n border-top: 2px solid rgba(0, 0, 0, 0.54);\n border-right: 2px solid rgba(0, 0, 0, 0.54);\n}\n.mat-paginator-first,\n.mat-paginator-last {\n border-top: 2px solid rgba(0, 0, 0, 0.54);\n}\n.mat-icon-button[disabled] .mat-paginator-decrement,\n.mat-icon-button[disabled] .mat-paginator-increment,\n.mat-icon-button[disabled] .mat-paginator-first,\n.mat-icon-button[disabled] .mat-paginator-last {\n border-color: rgba(0, 0, 0, 0.38);\n}\n.mat-progress-bar-background {\n fill: #c5cae9;\n}\n.mat-progress-bar-buffer {\n background-color: #c5cae9;\n}\n.mat-progress-bar-fill::after {\n background-color: #3f51b5;\n}\n.mat-progress-bar.mat-accent .mat-progress-bar-background {\n fill: #ff80ab;\n}\n.mat-progress-bar.mat-accent .mat-progress-bar-buffer {\n background-color: #ff80ab;\n}\n.mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\n background-color: #ff4081;\n}\n.mat-progress-bar.mat-warn .mat-progress-bar-background {\n fill: #ffcdd2;\n}\n.mat-progress-bar.mat-warn .mat-progress-bar-buffer {\n background-color: #ffcdd2;\n}\n.mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\n background-color: #f44336;\n}\n.mat-progress-spinner circle, .mat-spinner circle {\n stroke: #3f51b5;\n}\n.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle {\n stroke: #ff4081;\n}\n.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle {\n stroke: #f44336;\n}\n.mat-radio-outer-circle {\n border-color: rgba(0, 0, 0, 0.54);\n}\n.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\n border-color: #3f51b5;\n}\n.mat-radio-button.mat-primary .mat-radio-inner-circle,\n.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\n background-color: #3f51b5;\n}\n.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\n border-color: #ff4081;\n}\n.mat-radio-button.mat-accent .mat-radio-inner-circle,\n.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\n background-color: #ff4081;\n}\n.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\n border-color: #f44336;\n}\n.mat-radio-button.mat-warn .mat-radio-inner-circle,\n.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\n background-color: #f44336;\n}\n.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\n.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\n border-color: rgba(0, 0, 0, 0.38);\n}\n.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\n.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\n background-color: rgba(0, 0, 0, 0.38);\n}\n.mat-radio-button.mat-radio-disabled .mat-radio-label-content {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-radio-button .mat-ripple-element {\n background-color: black;\n}\n.mat-select-value {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-select-placeholder {\n color: rgba(0, 0, 0, 0.42);\n}\n.mat-select-disabled .mat-select-value {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-select-arrow {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-select-panel {\n background: white;\n}\n.mat-select-panel:not([class*=mat-elevation-z]) {\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\n background: rgba(0, 0, 0, 0.12);\n}\n.mat-form-field.mat-focused.mat-primary .mat-select-arrow {\n color: #3f51b5;\n}\n.mat-form-field.mat-focused.mat-accent .mat-select-arrow {\n color: #ff4081;\n}\n.mat-form-field.mat-focused.mat-warn .mat-select-arrow {\n color: #f44336;\n}\n.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\n color: #f44336;\n}\n.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-drawer-container {\n background-color: #fafafa;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-drawer {\n background-color: white;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-drawer.mat-drawer-push {\n background-color: white;\n}\n.mat-drawer:not(.mat-drawer-side) {\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\n}\n.mat-drawer-side {\n border-right: solid 1px rgba(0, 0, 0, 0.12);\n}\n.mat-drawer-side.mat-drawer-end {\n border-left: solid 1px rgba(0, 0, 0, 0.12);\n border-right: none;\n}\n[dir=rtl] .mat-drawer-side {\n border-left: solid 1px rgba(0, 0, 0, 0.12);\n border-right: none;\n}\n[dir=rtl] .mat-drawer-side.mat-drawer-end {\n border-left: none;\n border-right: solid 1px rgba(0, 0, 0, 0.12);\n}\n.mat-drawer-backdrop.mat-drawer-shown {\n background-color: rgba(0, 0, 0, 0.6);\n}\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\n background-color: #ff4081;\n}\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\n background-color: rgba(255, 64, 129, 0.54);\n}\n.mat-slide-toggle.mat-checked .mat-ripple-element {\n background-color: #ff4081;\n}\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\n background-color: #3f51b5;\n}\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\n background-color: rgba(63, 81, 181, 0.54);\n}\n.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\n background-color: #3f51b5;\n}\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\n background-color: #f44336;\n}\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\n background-color: rgba(244, 67, 54, 0.54);\n}\n.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\n background-color: #f44336;\n}\n.mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\n background-color: black;\n}\n.mat-slide-toggle-thumb {\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\n background-color: #fafafa;\n}\n.mat-slide-toggle-bar {\n background-color: rgba(0, 0, 0, 0.38);\n}\n.mat-slider-track-background {\n background-color: rgba(0, 0, 0, 0.26);\n}\n.mat-primary .mat-slider-track-fill,\n.mat-primary .mat-slider-thumb,\n.mat-primary .mat-slider-thumb-label {\n background-color: #3f51b5;\n}\n.mat-primary .mat-slider-thumb-label-text {\n color: white;\n}\n.mat-accent .mat-slider-track-fill,\n.mat-accent .mat-slider-thumb,\n.mat-accent .mat-slider-thumb-label {\n background-color: #ff4081;\n}\n.mat-accent .mat-slider-thumb-label-text {\n color: white;\n}\n.mat-warn .mat-slider-track-fill,\n.mat-warn .mat-slider-thumb,\n.mat-warn .mat-slider-thumb-label {\n background-color: #f44336;\n}\n.mat-warn .mat-slider-thumb-label-text {\n color: white;\n}\n.mat-slider-focus-ring {\n background-color: rgba(255, 64, 129, 0.2);\n}\n.mat-slider:hover .mat-slider-track-background,\n.cdk-focused .mat-slider-track-background {\n background-color: rgba(0, 0, 0, 0.38);\n}\n.mat-slider-disabled .mat-slider-track-background,\n.mat-slider-disabled .mat-slider-track-fill,\n.mat-slider-disabled .mat-slider-thumb {\n background-color: rgba(0, 0, 0, 0.26);\n}\n.mat-slider-disabled:hover .mat-slider-track-background {\n background-color: rgba(0, 0, 0, 0.26);\n}\n.mat-slider-min-value .mat-slider-focus-ring {\n background-color: rgba(0, 0, 0, 0.12);\n}\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\n background-color: rgba(0, 0, 0, 0.87);\n}\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\n background-color: rgba(0, 0, 0, 0.26);\n}\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\n border-color: rgba(0, 0, 0, 0.26);\n background-color: transparent;\n}\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\n border-color: rgba(0, 0, 0, 0.38);\n}\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\n border-color: rgba(0, 0, 0, 0.26);\n}\n.mat-slider-has-ticks .mat-slider-wrapper::after {\n border-color: rgba(0, 0, 0, 0.7);\n}\n.mat-slider-horizontal .mat-slider-ticks {\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\n}\n.mat-slider-vertical .mat-slider-ticks {\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\n}\n.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n@media (hover: none) {\n .mat-step-header:hover {\n background: none;\n }\n}\n.mat-step-header .mat-step-label,\n.mat-step-header .mat-step-optional {\n color: rgba(0, 0, 0, 0.54);\n}\n.mat-step-header .mat-step-icon {\n background-color: rgba(0, 0, 0, 0.54);\n color: white;\n}\n.mat-step-header .mat-step-icon-selected,\n.mat-step-header .mat-step-icon-state-done,\n.mat-step-header .mat-step-icon-state-edit {\n background-color: #3f51b5;\n color: white;\n}\n.mat-step-header .mat-step-icon-state-error {\n background-color: transparent;\n color: #f44336;\n}\n.mat-step-header .mat-step-label.mat-step-label-active {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-step-header .mat-step-label.mat-step-label-error {\n color: #f44336;\n}\n.mat-stepper-horizontal, .mat-stepper-vertical {\n background-color: white;\n}\n.mat-stepper-vertical-line::before {\n border-left-color: rgba(0, 0, 0, 0.12);\n}\n.mat-horizontal-stepper-header::before,\n.mat-horizontal-stepper-header::after,\n.mat-stepper-horizontal-line {\n border-top-color: rgba(0, 0, 0, 0.12);\n}\n.mat-sort-header-arrow {\n color: #757575;\n}\n.mat-tab-nav-bar,\n.mat-tab-header {\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n}\n.mat-tab-group-inverted-header .mat-tab-nav-bar,\n.mat-tab-group-inverted-header .mat-tab-header {\n border-top: 1px solid rgba(0, 0, 0, 0.12);\n border-bottom: none;\n}\n.mat-tab-label, .mat-tab-link {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled {\n color: rgba(0, 0, 0, 0.38);\n}\n.mat-tab-header-pagination-chevron {\n border-color: rgba(0, 0, 0, 0.87);\n}\n.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\n border-color: rgba(0, 0, 0, 0.38);\n}\n.mat-tab-group[class*=mat-background-] .mat-tab-header,\n.mat-tab-nav-bar[class*=mat-background-] {\n border-bottom: none;\n border-top: none;\n}\n.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\n background-color: rgba(197, 202, 233, 0.3);\n}\n.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {\n background-color: #3f51b5;\n}\n.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar {\n background-color: white;\n}\n.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\n background-color: rgba(255, 128, 171, 0.3);\n}\n.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar {\n background-color: #ff4081;\n}\n.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar {\n background-color: white;\n}\n.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\n background-color: rgba(255, 205, 210, 0.3);\n}\n.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar {\n background-color: #f44336;\n}\n.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar {\n background-color: white;\n}\n.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\n background-color: rgba(197, 202, 233, 0.3);\n}\n.mat-tab-group.mat-background-primary .mat-tab-header, .mat-tab-group.mat-background-primary .mat-tab-links, .mat-tab-group.mat-background-primary .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-primary .mat-tab-header, .mat-tab-nav-bar.mat-background-primary .mat-tab-links, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination {\n background-color: #3f51b5;\n}\n.mat-tab-group.mat-background-primary .mat-tab-label, .mat-tab-group.mat-background-primary .mat-tab-link, .mat-tab-nav-bar.mat-background-primary .mat-tab-label, .mat-tab-nav-bar.mat-background-primary .mat-tab-link {\n color: white;\n}\n.mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled {\n color: rgba(255, 255, 255, 0.4);\n}\n.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron {\n border-color: white;\n}\n.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\n border-color: rgba(255, 255, 255, 0.4);\n}\n.mat-tab-group.mat-background-primary .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary .mat-ripple-element {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\n background-color: rgba(255, 128, 171, 0.3);\n}\n.mat-tab-group.mat-background-accent .mat-tab-header, .mat-tab-group.mat-background-accent .mat-tab-links, .mat-tab-group.mat-background-accent .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-accent .mat-tab-header, .mat-tab-nav-bar.mat-background-accent .mat-tab-links, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination {\n background-color: #ff4081;\n}\n.mat-tab-group.mat-background-accent .mat-tab-label, .mat-tab-group.mat-background-accent .mat-tab-link, .mat-tab-nav-bar.mat-background-accent .mat-tab-label, .mat-tab-nav-bar.mat-background-accent .mat-tab-link {\n color: white;\n}\n.mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled {\n color: rgba(255, 255, 255, 0.4);\n}\n.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron {\n border-color: white;\n}\n.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\n border-color: rgba(255, 255, 255, 0.4);\n}\n.mat-tab-group.mat-background-accent .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent .mat-ripple-element {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\n background-color: rgba(255, 205, 210, 0.3);\n}\n.mat-tab-group.mat-background-warn .mat-tab-header, .mat-tab-group.mat-background-warn .mat-tab-links, .mat-tab-group.mat-background-warn .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-warn .mat-tab-header, .mat-tab-nav-bar.mat-background-warn .mat-tab-links, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination {\n background-color: #f44336;\n}\n.mat-tab-group.mat-background-warn .mat-tab-label, .mat-tab-group.mat-background-warn .mat-tab-link, .mat-tab-nav-bar.mat-background-warn .mat-tab-label, .mat-tab-nav-bar.mat-background-warn .mat-tab-link {\n color: white;\n}\n.mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled {\n color: rgba(255, 255, 255, 0.4);\n}\n.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron {\n border-color: white;\n}\n.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\n border-color: rgba(255, 255, 255, 0.4);\n}\n.mat-tab-group.mat-background-warn .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn .mat-ripple-element {\n background-color: rgba(255, 255, 255, 0.12);\n}\n.mat-toolbar {\n background: whitesmoke;\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-toolbar.mat-primary {\n background: #3f51b5;\n color: white;\n}\n.mat-toolbar.mat-accent {\n background: #ff4081;\n color: white;\n}\n.mat-toolbar.mat-warn {\n background: #f44336;\n color: white;\n}\n.mat-toolbar .mat-form-field-underline,\n.mat-toolbar .mat-form-field-ripple,\n.mat-toolbar .mat-focused .mat-form-field-ripple {\n background-color: currentColor;\n}\n.mat-toolbar .mat-form-field-label,\n.mat-toolbar .mat-focused .mat-form-field-label,\n.mat-toolbar .mat-select-value,\n.mat-toolbar .mat-select-arrow,\n.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\n color: inherit;\n}\n.mat-toolbar .mat-input-element {\n caret-color: currentColor;\n}\n.mat-tooltip {\n background: rgba(97, 97, 97, 0.9);\n}\n.mat-tree {\n background: white;\n}\n.mat-tree-node,\n.mat-nested-tree-node {\n color: rgba(0, 0, 0, 0.87);\n}\n.mat-snack-bar-container {\n color: rgba(255, 255, 255, 0.7);\n background: #323232;\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\n}\n.mat-simple-snackbar-action {\n color: #ff4081;\n}\n/* You can add global styles to this file, and also import other style files */\nhtml, body {\n height: 100%;\n}\nbody {\n margin: 0;\n font-family: \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-weight: bold;\n -webkit-font-smoothing: antialiased;\n}\nh1, h2, h3, h4, h5, p, li, ul {\n margin: 0;\n padding: 0;\n}\n.panel-success {\n color: #A9E5AC;\n}\n.panel-error {\n color: red;\n}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvX3RoZW1pbmcuc2NzcyIsInNyYy9zdHlsZXMuc2NzcyIsIi9Vc2Vycy9hbGV4L0Rlc2t0b3Avb2JzY3VyaWZ5My9zcmMvc3R5bGVzLnNjc3MiLCIvVXNlcnMvYWxleC9EZXNrdG9wL29ic2N1cmlmeTMvc3JjL2FwcC9zY3NzL192YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwMUNBLGtDQUFBO0FBNmlEQSwyQ0FBQTtBQXdDQSxxQkFBQTtBQXgvQkU7RUFDRSxnQkFyTG9CO0VBc0xwQixlQXZMa0I7RUF3TGxCLGlEQUFBO0FDbjdESjtBRHM3REU7RUFFRSxjQUFBO0FDcDdESjtBRHU3REU7RUFDRSxlQUFBO0FDcDdESjtBRHluREU7RUE5TkUsd0RBQUE7RUFnT0EsZ0JBQUE7QUN0bkRKO0FEeW5ERTtFQW5PRSx3REFBQTtFQXFPQSxnQkFBQTtBQ3RuREo7QUR5bkRFO0VBeE9FLHdEQUFBO0VBME9BLGdCQUFBO0FDdG5ESjtBRHluREU7RUE3T0Usd0RBQUE7RUErT0EsZ0JBQUE7QUN0bkRKO0FENG5ERTtFQXJQRSxxRUFBQTtFQThQQSxnQkFBQTtBQ2hvREo7QURtb0RFO0VBalFFLHFFQUFBO0VBMFFBLGdCQUFBO0FDdm9ESjtBRDBvREU7RUE3UUUsd0RBQUE7QUN6M0NKO0FEMG9ERTtFQWpSRSx3REFBQTtBQ3IzQ0o7QUR5b0RJO0VBQ0UsZ0JBQUE7QUN2b0ROO0FEMm9ERTtFQXpSRSx3REFBQTtBQzkyQ0o7QUQyb0RFO0VBN1JFLDBEQUFBO0VBWUYsdUJBQUE7RUFtUkUsZ0JBQUE7QUN2b0RKO0FEMG9ERTtFQWxTRSx3REFBQTtFQVlGLHVCQUFBO0VBd1JFLGdCQUFBO0FDdG9ESjtBRHlvREU7RUF2U0Usd0RBQUE7RUFZRix3QkFBQTtFQTZSRSxnQkFBQTtBQ3JvREo7QUR3b0RFO0VBNVNFLHdEQUFBO0VBOFNBLGdC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O0FEeWdGRTtFQUNFLGlCQUFBO0FDdGdGSjtBRHlnRkU7O0VBRUUsMEJBQUE7QUN0Z0ZKO0FENHpERTtFQUdFLCtCQUFBO0VBQ0EsbUJBQUE7RUExb0hGLDJIQUFBO0FDZzFERjtBRCt6REU7RUFDRSxjQUFBO0FDNXpESjtBQ2h2RUEsOEVBQUE7QUFFQTtFQUFhLFlBQUE7QURtdkViO0FDbHZFQTtFQUFPLFNBQUE7RUFBVyx5Q0MvQkg7RUQrQitCLGVBQUE7RUFBaUIsaUJBQUE7RUFBbUIsbUNBQUE7QUQwdkVsRjtBQ3h2RUE7RUFDSSxTQUFBO0VBQ0EsVUFBQTtBRDJ2RUo7QUNydkVBO0VBQ0ksY0NyQ1k7QUY2eEVoQjtBQ3J2RUE7RUFDSSxVQUFBO0FEd3ZFSiIsImZpbGUiOiJzcmMvc3R5bGVzLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnQgYWxsIHRoZSB0aGVtaW5nIGZ1bmN0aW9uYWxpdHkuXG4vLyBXZSBjYW4gdXNlIHJlbGF0aXZlIGltcG9ydHMgZm9yIGltcG9ydHMgZnJvbSB0aGUgY2RrIGJlY2F1c2Ugd2UgYnVuZGxlIGV2ZXJ5dGhpbmdcbi8vIHVwIGludG8gYSBzaW5nbGUgZmxhdCBzY3NzIGZpbGUgZm9yIG1hdGVyaWFsLlxuLy8gV2Ugd2FudCBvdmVybGF5cyB0byBhbHdheXMgYXBwZWFyIG92ZXIgdXNlciBjb250ZW50LCBzbyBzZXQgYSBiYXNlbGluZVxuLy8gdmVyeSBoaWdoIHotaW5kZXggZm9yIHRoZSBvdmVybGF5IGNvbnRhaW5lciwgd2hpY2ggaXMgd2hlcmUgd2UgY3JlYXRlIHRoZSBuZXdcbi8vIHN0YWNraW5nIGNvbnRleHQgZm9yIGFsbCBvdmVybGF5cy5cbiRjZGstei1pbmRleC1vdmVybGF5LWNvbnRhaW5lcjogMTAwMCAhZGVmYXVsdDtcbiRjZGstei1pbmRleC1vdmVybGF5OiAxMDAwICFkZWZhdWx0O1xuJGNkay16LWluZGV4LW92ZXJsYXktYmFja2Ryb3A6IDEwMDAgIWRlZmF1bHQ7XG5cbi8vIEJhY2tncm91bmQgY29sb3IgZm9yIGFsbCBvZiB0aGUgYmFja2Ryb3BzXG4kY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcC1iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMzIpICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IGJhY2tkcm9wIGFuaW1hdGlvbiBpcyBiYXNlZCBvbiB0aGUgTWF0ZXJpYWwgRGVzaWduIHN3aWZ0LWVhc2Utb3V0LlxuJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMgIWRlZmF1bHQ7XG4kYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSkgIWRlZmF1bHQ7XG5cblxuQG1peGluIGNkay1vdmVybGF5KCkge1xuICAuY2RrLW92ZXJsYXktY29udGFpbmVyLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIC8vIERpc2FibGUgZXZlbnRzIGZyb20gYmVpbmcgY2FwdHVyZWQgb24gdGhlIG92ZXJsYXkgY29udGFpbmVyLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgLy8gVGhlIGNvbnRhaW5lciBzaG91bGQgYmUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0LlxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIFRoZSBvdmVybGF5LWNvbnRhaW5lciBpcyBhbiBpbnZpc2libGUgZWxlbWVudCB3aGljaCBjb250YWlucyBhbGwgaW5kaXZpZHVhbCBvdmVybGF5cy5cbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5LWNvbnRhaW5lcjtcblxuICAgICY6ZW1wdHkge1xuICAgICAgLy8gSGlkZSB0aGUgZWxlbWVudCB3aGVuIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgY2hpbGQgbm9kZXMuIFRoaXMgZG9lc24ndFxuICAgICAgLy8gaW5jbHVkZSBvdmVybGF5cyB0aGF0IGhhdmUgYmVlbiBkZXRhY2hlZCwgcmF0aGVyIHRoYW4gZGlzcG9zZWQuXG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdlIHVzZSBhbiBleHRyYSB3cmFwcGVyIGVsZW1lbnQgaW4gb3JkZXIgdG8gdXNlIG1ha2UgdGhlIG92ZXJsYXkgaXRzZWxmIGEgZmxleCBpdGVtLlxuICAvLyBUaGlzIG1ha2VzIGNlbnRlcmluZyB0aGUgb3ZlcmxheSBlYXN5IHdpdGhvdXQgcnVubmluZyBpbnRvIHRoZSBzdWJwaXhlbCByZW5kZXJpbmdcbiAgLy8gcHJvYmxlbXMgdGllZCB0byB1c2luZyBgdHJhbnNmb3JtYCBhbmQgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBvdGhlciBwb3NpdGlvblxuICAvLyBzdHJhdGVnaWVzLlxuICAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5O1xuICB9XG5cbiAgLy8gQSBzaW5nbGUgb3ZlcmxheSBwYW5lLlxuICAuY2RrLW92ZXJsYXktcGFuZSB7XG4gICAgLy8gTm90ZTogaXQncyBpbXBvcnRhbnQgZm9yIHRoaXMgb25lIHRvIHN0YXJ0IG9mZiBgYWJzb2x1dGVgLFxuICAgIC8vIGluIG9yZGVyIGZvciB1cyB0byBiZSBhYmxlIHRvIG1lYXN1cmUgaXQgY29ycmVjdGx5LlxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHotaW5kZXg6ICRjZGstei1pbmRleC1vdmVybGF5O1xuXG4gICAgLy8gRm9yIGNvbm5lY3RlZC1wb3NpdGlvbiBvdmVybGF5cywgd2Ugc2V0IGBkaXNwbGF5OiBmbGV4YCBpblxuICAgIC8vIG9yZGVyIHRvIGZvcmNlIGBtYXgtd2lkdGhgIGFuZCBgbWF4LWhlaWdodGAgdG8gdGFrZSBlZmZlY3QuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1iYWNrZHJvcCB7XG4gICAgLy8gVE9ETyhqZWxib3Vybik6IHJldXNlIHNpZGVuYXYgZnVsbHNjcmVlbiBtaXhpbi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXktYmFja2Ryb3A7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRiYWNrZHJvcC1hbmltYXRpb24tZHVyYXRpb24gJGJhY2tkcm9wLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb247XG4gICAgb3BhY2l0eTogMDtcblxuICAgICYuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyB7XG4gICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAvLyBJbiBoaWdoIGNvbnRyYXN0IG1vZGUgdGhlIHJnYmEgYmFja2dyb3VuZCB3aWxsIGJlY29tZSBzb2xpZCBzbyB3ZSBuZWVkIHRvIGZhbGwgYmFja1xuICAgICAgLy8gdG8gbWFraW5nIGl0IG9wYXF1ZSB1c2luZyBgb3BhY2l0eWAuIE5vdGUgdGhhdCB3ZSBjYW4ndCB1c2UgdGhlIGBjZGstaGlnaC1jb250cmFzdGBcbiAgICAgIC8vIG1peGluLCBiZWNhdXNlIHdlIGNhbid0IG5vcm1hbGl6ZSB0aGUgaW1wb3J0IHBhdGggdG8gdGhlIF9hMTF5LnNjc3MgYm90aCBmb3IgdGhlXG4gICAgICAvLyBzb3VyY2UgYW5kIHdoZW4gdGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkLiBTZWUgIzEwOTA4LlxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kOiAkY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcC1iYWNrZ3JvdW5kO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIHtcbiAgICAvLyBOb3RlOiBhcyBvZiBGaXJlZm94IDU3LCBoYXZpbmcgdGhlIGJhY2tkcm9wIGJlIGBiYWNrZ3JvdW5kOiBub25lYCB3aWxsIHByZXZlbnQgaXQgZnJvbVxuICAgIC8vIGNhcHR1cmluZyB0aGUgdXNlcidzIG1vdXNlIHNjcm9sbCBldmVudHMuIFNpbmNlIHdlIGFsc28gY2FuJ3QgdXNlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gYHJnYmEoMCwgMCwgMCwgMClgLCB3ZSB3b3JrIGFyb3VuZCB0aGUgaW5jb25zaXN0ZW5jeSBieSBub3Qgc2V0dGluZyB0aGUgYmFja2dyb3VuZCBhdFxuICAgIC8vIGFsbCBhbmQgdXNpbmcgYG9wYWNpdHlgIHRvIG1ha2UgdGhlIGVsZW1lbnQgdHJhbnNwYXJlbnQuXG4gICAgJiwgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheSBwYXJlbnQgZWxlbWVudCB1c2VkIHdpdGggdGhlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneS4gVXNlZCB0byBjb25zdHJhaW4gdGhlXG4gIC8vIG92ZXJsYXkgZWxlbWVudCdzIHNpemUgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gIC5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJGNkay16LWluZGV4LW92ZXJsYXk7XG5cbiAgICAvLyBXZSB1c2UgYGRpc3BsYXk6IGZsZXhgIG9uIHRoaXMgZWxlbWVudCBleGNsdXNpdmVseSBmb3IgY2VudGVyaW5nIGNvbm5lY3RlZCBvdmVybGF5cy5cbiAgICAvLyBXaGVuICpub3QqIGNlbnRlcmluZywgYSB0b3AvbGVmdC9ib3R0b20vcmlnaHQgd2lsbCBiZSBzZXQgd2hpY2ggb3ZlcnJpZGVzIHRoZSBub3JtYWxcbiAgICAvLyBmbGV4IGxheW91dC5cbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgLy8gV2UgdXNlIHRoZSBgY29sdW1uYCBkaXJlY3Rpb24gaGVyZSB0byBhdm9pZCBzb21lIGZsZXhib3ggaXNzdWVzIGluIEVkZ2VcbiAgICAvLyB3aGVuIHVzaW5nIHRoZSBcImdyb3cgYWZ0ZXIgb3BlblwiIG9wdGlvbnMuXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC8vIEFkZCBzb21lIGRpbWVuc2lvbnMgc28gdGhlIGVsZW1lbnQgaGFzIGFuIGBpbm5lclRleHRgIHdoaWNoIHNvbWUgcGVvcGxlIGRlcGVuZCBvbiBpbiB0ZXN0cy5cbiAgICBtaW4td2lkdGg6IDFweDtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gIH1cblxuICAvLyBVc2VkIHdoZW4gZGlzYWJsaW5nIGdsb2JhbCBzY3JvbGxpbmcuXG4gIC5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG5cbiAgICAvLyBOZWNlc3NhcnkgZm9yIHRoZSBjb250ZW50IG5vdCB0byBsb3NlIGl0cyB3aWR0aC4gTm90ZSB0aGF0IHdlJ3JlIHVzaW5nIDEwMCUsIGluc3RlYWQgb2ZcbiAgICAvLyAxMDB2dywgYmVjYXVzZSAxMDB2dyBpbmNsdWRlcyB0aGUgd2lkdGggcGx1cyB0aGUgc2Nyb2xsYmFyLCB3aGVyZWFzIDEwMCUgaXMgdGhlIHdpZHRoXG4gICAgLy8gdGhhdCB0aGUgZWxlbWVudCBoYWQgYmVmb3JlIHdlIG1hZGUgaXQgYGZpeGVkYC5cbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC8vIE5vdGU6IHRoaXMgd2lsbCBhbHdheXMgYWRkIGEgc2Nyb2xsYmFyIHRvIHdoYXRldmVyIGVsZW1lbnQgaXQgaXMgb24sIHdoaWNoIGNhblxuICAgIC8vIHBvdGVudGlhbGx5IHJlc3VsdCBpbiBkb3VibGUgc2Nyb2xsYmFycy4gSXQgc2hvdWxkbid0IGJlIGFuIGlzc3VlLCBiZWNhdXNlIHdlIHdvbid0XG4gICAgLy8gYmxvY2sgc2Nyb2xsaW5nIG9uIGEgcGFnZSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHNjcm9sbGJhciBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG5cbkBtaXhpbiBjZGstYTExeSB7XG4gIC5jZGstdmlzdWFsbHktaGlkZGVuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLy8gQXZvaWQgYnJvd3NlcnMgcmVuZGVyaW5nIHRoZSBmb2N1cyByaW5nIGluIHNvbWUgY2FzZXMuXG4gICAgb3V0bGluZTogMDtcblxuICAgIC8vIEF2b2lkIHNvbWUgY2FzZXMgd2hlcmUgdGhlIGJyb3dzZXIgd2lsbCBzdGlsbCByZW5kZXIgdGhlIG5hdGl2ZSBjb250cm9scyAoc2VlICM5MDQ5KS5cbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICB9XG59XG5cbi8vIEFwcGxpZXMgc3R5bGVzIGZvciB1c2VycyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuIE5vdGUgdGhhdCB0aGlzIG9ubHkgYXBwbGllc1xuLy8gdG8gTWljcm9zb2Z0IGJyb3dzZXJzLiBDaHJvbWUgY2FuIGJlIGluY2x1ZGVkIGJ5IGNoZWNraW5nIGZvciB0aGUgYGh0bWxbaGNdYFxuLy8gYXR0cmlidXRlLCBob3dldmVyIENocm9tZSBoYW5kbGVzIGhpZ2ggY29udHJhc3QgZGlmZmVyZW50bHkuXG4vL1xuLy8gQHBhcmFtIHRhcmdldCBXaGljaCBraW5kIG9mIGhpZ2ggY29udHJhc3Qgc2V0dGluZyB0byB0YXJnZXQuIERlZmF1bHRzIHRvIGBhY3RpdmVgLCBjYW4gYmVcbi8vICAgIGB3aGl0ZS1vbi1ibGFja2Agb3IgYGJsYWNrLW9uLXdoaXRlYC5cbkBtaXhpbiBjZGstaGlnaC1jb250cmFzdCgkdGFyZ2V0OiBhY3RpdmUpIHtcbiAgQG1lZGlhICgtbXMtaGlnaC1jb250cmFzdDogJHRhcmdldCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgZW5hYmxlIG1vbml0b3JpbmcgYXV0b2ZpbGwgc3RhdGUgb2YgdGV4dCBmaWVsZHMuXG5AbWl4aW4gY2RrLXRleHQtZmllbGQge1xuICAvLyBLZXlmcmFtZXMgdGhhdCBhcHBseSBubyBzdHlsZXMsIGJ1dCBhbGxvdyB1cyB0byBtb25pdG9yIHdoZW4gYW4gdGV4dCBmaWVsZCBiZWNvbWVzIGF1dG9maWxsZWRcbiAgLy8gYnkgd2F0Y2hpbmcgZm9yIHRoZSBhbmltYXRpb24gZXZlbnRzIHRoYXQgYXJlIGZpcmVkIHdoZW4gdGhleSBzdGFydC4gTm90ZTogdGhlIC8qISovIGNvbW1lbnQgaXNcbiAgLy8gbmVlZGVkIHRvIHByZXZlbnQgTGliU2FzcyBmcm9tIHN0cmlwcGluZyB0aGUga2V5ZnJhbWVzIG91dC5cbiAgLy8gQmFzZWQgb246IGh0dHBzOi8vbWVkaXVtLmNvbS9AYnJ1bm4vZGV0ZWN0aW5nLWF1dG9maWxsZWQtZmllbGRzLWluLWphdmFzY3JpcHQtYWVkNTk4ZDI1ZGE3XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgey8qISovfVxuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCB7LyohKi99XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb24tbmFtZTogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQ7XG4gIH1cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQ7XG4gIH1cblxuICAvLyBSZW1vdmUgdGhlIHJlc2l6ZSBoYW5kbGUgb24gYXV0b3NpemluZyB0ZXh0YXJlYXMsIGJlY2F1c2Ugd2hhdGV2ZXIgaGVpZ2h0XG4gIC8vIHRoZSB1c2VyIHJlc2l6ZWQgdG8gd2lsbCBiZSBvdmVyd3JpdHRlbiBvbmNlIHRoZXkgc3RhcnQgdHlwaW5nIGFnYWluLlxuICB0ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUge1xuICAgIHJlc2l6ZTogbm9uZTtcbiAgfVxuXG4gIC8vIFRoaXMgY2xhc3MgaXMgdGVtcG9yYXJpbHkgYXBwbGllZCB0byB0aGUgdGV4dGFyZWEgd2hlbiBpdCBpcyBiZWluZyBtZWFzdXJlZC4gSXQgaXMgaW1tZWRpYXRlbHlcbiAgLy8gcmVtb3ZlZCB3aGVuIG1lYXN1cmluZyBpcyBjb21wbGV0ZS4gV2UgdXNlIGAhaW1wb3J0YW50YCBydWxlcyBoZXJlIHRvIG1ha2Ugc3VyZSB1c2VyLXNwZWNpZmllZFxuICAvLyBydWxlcyBkbyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIG1lYXN1cmVtZW50LlxuICB0ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nIHtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgLy8gSGF2aW5nIDJweCB0b3AgYW5kIGJvdHRvbSBwYWRkaW5nIHNlZW1zIHRvIGZpeCBhIGJ1ZyB3aGVyZSBDaHJvbWUgZ2V0cyBhbiBpbmNvcnJlY3RcbiAgICAvLyBtZWFzdXJlbWVudC4gV2UganVzdCBoYXZlIHRvIGFjY291bnQgZm9yIGl0IGxhdGVyIGFuZCBzdWJ0cmFjdCBpdCBvZmYgdGhlIGZpbmFsIHJlc3VsdC5cbiAgICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8gVXNlZCB0byBnZW5lcmF0ZSBVSURzIGZvciBrZXlmcmFtZXMgdXNlZCB0byBjaGFuZ2UgdGhlIHRleHQgZmllbGQgYXV0b2ZpbGwgc3R5bGVzLlxuJGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50OiAwO1xuXG4vLyBNaXhpbiB1c2VkIHRvIGFwcGx5IGN1c3RvbSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kIGNvbG9ycyB0byBhbiBhdXRvZmlsbGVkIHRleHQgZmllbGQuXG4vLyBCYXNlZCBvbjogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjc4MTU0OS9cbi8vIHJlbW92aW5nLWlucHV0LWJhY2tncm91bmQtY29sb3VyLWZvci1jaHJvbWUtYXV0b2NvbXBsZXRlI2Fuc3dlci0zNzQzMjI2MFxuQG1peGluIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yKCRiYWNrZ3JvdW5kLCAkZm9yZWdyb3VuZDonJykge1xuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSB7XG4gICAgdG8ge1xuICAgICAgYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICBAaWYgJGZvcmVncm91bmQgIT0gJycgeyBjb2xvcjogJGZvcmVncm91bmQ7IH1cbiAgICB9XG4gIH1cblxuICAmOi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH07XG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcbiAgfVxuXG4gICYuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIGFuaW1hdGlvbi1uYW1lOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9O1xuICB9XG5cbiAgJGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50OlxuICAgICAgJGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50ICsgMSAhZ2xvYmFsO1xufVxuXG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgbWF0ZXJpYWwgZGVzaWduIHRyZWF0bWVudHMgdG8gYW55IGVsZW1lbnQuXG4vLyBNZWRpYSBxdWVyaWVzXG4vLyBUT0RPKGpvc2VwaHBlcnJvdHQpOiBDaGFuZ2UgJG1hdC14c21hbGwgYW5kICRtYXQtc21hbGwgdXNhZ2VzIHRvIHJlbHkgb24gQnJlYWtwb2ludE9ic2VydmVyLFxuJG1hdC14c21hbGw6ICdtYXgtd2lkdGg6IDU5OXB4JztcbiRtYXQtc21hbGw6ICdtYXgtd2lkdGg6IDk1OXB4JztcblxuLy8gVE9ETzogUmV2aXNpdCBhbGwgei1pbmRpY2VzIGJlZm9yZSBiZXRhXG4vLyB6LWluZGV4IG1hc3RlciBsaXN0XG5cbiR6LWluZGV4LWZhYjogMjAgIWRlZmF1bHQ7XG4kei1pbmRleC1kcmF3ZXI6IDEwMCAhZGVmYXVsdDtcblxuLy8gR2xvYmFsIGNvbnN0YW50c1xuJHBpOiAzLjE0MTU5MjY1O1xuXG4vLyBQYWRkaW5nIGJldHdlZW4gaW5wdXQgdG9nZ2xlcyBhbmQgdGhlaXIgbGFiZWxzXG4kbWF0LXRvZ2dsZS1wYWRkaW5nOiA4cHggIWRlZmF1bHQ7XG4vLyBXaWR0aCBhbmQgaGVpZ2h0IG9mIGlucHV0IHRvZ2dsZXNcbiRtYXQtdG9nZ2xlLXNpemU6IDIwcHggIWRlZmF1bHQ7XG5cbi8vIEVhc2luZyBDdXJ2ZXNcbi8vIFRPRE8oamVsYm91cm4pOiBhbGwgb2YgdGhlc2UgbmVlZCB0byBiZSByZXZpc2l0ZWRcblxuLy8gVGhlIGRlZmF1bHQgYW5pbWF0aW9uIGN1cnZlcyB1c2VkIGJ5IG1hdGVyaWFsIGRlc2lnbi5cbiRtYXQtbGluZWFyLW91dC1zbG93LWluLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKSAhZGVmYXVsdDtcbiRtYXQtZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgIWRlZmF1bHQ7XG4kbWF0LWZhc3Qtb3V0LWxpbmVhci1pbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpICFkZWZhdWx0O1xuXG4kZWFzZS1pbi1vdXQtY3VydmUtZnVuY3Rpb246IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSAhZGVmYXVsdDtcblxuJHN3aWZ0LWVhc2Utb3V0LWR1cmF0aW9uOiA0MDBtcyAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLW91dC10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpICFkZWZhdWx0O1xuJHN3aWZ0LWVhc2Utb3V0OiBhbGwgJHN3aWZ0LWVhc2Utb3V0LWR1cmF0aW9uICRzd2lmdC1lYXNlLW91dC10aW1pbmctZnVuY3Rpb24gIWRlZmF1bHQ7XG5cbiRzd2lmdC1lYXNlLWluLWR1cmF0aW9uOiAzMDBtcyAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLWluLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAsIDAuNTUsIDAuMikgIWRlZmF1bHQ7XG4kc3dpZnQtZWFzZS1pbjogYWxsICRzd2lmdC1lYXNlLWluLWR1cmF0aW9uICRzd2lmdC1lYXNlLWluLXRpbWluZy1mdW5jdGlvbiAhZGVmYXVsdDtcblxuJHN3aWZ0LWVhc2UtaW4tb3V0LWR1cmF0aW9uOiA1MDBtcyAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLWluLW91dC10aW1pbmctZnVuY3Rpb246ICRlYXNlLWluLW91dC1jdXJ2ZS1mdW5jdGlvbiAhZGVmYXVsdDtcbiRzd2lmdC1lYXNlLWluLW91dDogYWxsICRzd2lmdC1lYXNlLWluLW91dC1kdXJhdGlvbiAkc3dpZnQtZWFzZS1pbi1vdXQtdGltaW5nLWZ1bmN0aW9uICFkZWZhdWx0O1xuXG4kc3dpZnQtbGluZWFyLWR1cmF0aW9uOiA4MG1zICFkZWZhdWx0O1xuJHN3aWZ0LWxpbmVhci10aW1pbmctZnVuY3Rpb246IGxpbmVhciAhZGVmYXVsdDtcbiRzd2lmdC1saW5lYXI6IGFsbCAkc3dpZnQtbGluZWFyLWR1cmF0aW9uICRzd2lmdC1saW5lYXItdGltaW5nLWZ1bmN0aW9uICFkZWZhdWx0O1xuXG5cblxuLy8gQSBjb2xsZWN0aW9uIG9mIG1peGlucyBhbmQgQ1NTIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBlbGV2YXRpb24gdG8gYSBtYXRlcmlhbFxuLy8gZWxlbWVudC5cbi8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vZW52aXJvbm1lbnQvZWxldmF0aW9uLmh0bWxcbi8vIEV4YW1wbGVzOlxuLy9cbi8vXG4vLyAubWF0LWZvbyB7XG4vLyAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDIpO1xuLy9cbi8vICAgJjphY3RpdmUge1xuLy8gICAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gPGRpdiBpZD1cImV4dGVybmFsLWNhcmRcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIj48cD5Tb21lIGNvbnRlbnQ8L3A+PC9kaXY+XG4vL1xuLy8gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNpZ24gYmVoaW5kIGhvdyBlbGV2YXRpb24gaXMgaW1wbGVtZW50ZWQsIHNlZSB0aGUgZGVzaWduIGRvYyBhdFxuLy8gaHR0cHM6Ly9nb28uZ2wvS3EwazlaLlxuXG4vLyBDb2xvcnMgZm9yIHVtYnJhLCBwZW51bWJyYSwgYW5kIGFtYmllbnQgc2hhZG93cy4gQXMgZGVzY3JpYmVkIGluIHRoZSBkZXNpZ24gZG9jLCBlYWNoIGVsZXZhdGlvblxuLy8gbGV2ZWwgaXMgY3JlYXRlZCB1c2luZyBhIHNldCBvZiAzIHNoYWRvdyB2YWx1ZXMsIG9uZSBmb3IgdW1icmEgKHRoZSBzaGFkb3cgcmVwcmVzZW50aW5nIHRoZVxuLy8gc3BhY2UgY29tcGxldGVseSBvYnNjdXJlZCBieSBhbiBvYmplY3QgcmVsYXRpdmUgdG8gaXRzIGxpZ2h0IHNvdXJjZSksIG9uZSBmb3IgcGVudW1icmEgKHRoZVxuLy8gc3BhY2UgcGFydGlhbGx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCksIGFuZCBvbmUgZm9yIGFtYmllbnQgKHRoZSBzcGFjZSB3aGljaCBjb250YWlucyB0aGUgb2JqZWN0XG4vLyBpdHNlbGYpLiBGb3IgYSBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHRlcm1zIGFuZCB0aGVpciBtZWFuaW5ncywgc2VlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbWJyYSxfcGVudW1icmFfYW5kX2FudHVtYnJhLlxuXG4vLyBNYXBzIGZvciB0aGUgZGlmZmVyZW50IHNoYWRvdyBzZXRzIGFuZCB0aGVpciB2YWx1ZXMgd2l0aGluIGVhY2ggei1zcGFjZS4gVGhlc2UgdmFsdWVzIHdlcmVcbi8vIGNyZWF0ZWQgYnkgdGFraW5nIGEgZmV3IHJlZmVyZW5jZSBzaGFkb3cgc2V0cyBjcmVhdGVkIGJ5IEdvb2dsZSdzIERlc2lnbmVycyBhbmQgaW50ZXJwb2xhdGluZ1xuLy8gYWxsIG9mIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGVtLlxuXG5AZnVuY3Rpb24gX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICAkc2hhZG93LWNvbG9yOiBpZih0eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMiksICRjb2xvcik7XG5cbiAgQHJldHVybiAoXG4gICAgMDogJzBweCAwcHggMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOiAnMHB4IDJweCAxcHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDNweCAxcHggLTJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAzOiAnMHB4IDNweCAzcHggLTJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA0OiAnMHB4IDJweCA0cHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDNweCA1cHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA2OiAnMHB4IDNweCA1cHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA3OiAnMHB4IDRweCA1cHggLTJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA4OiAnMHB4IDVweCA1cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA5OiAnMHB4IDVweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMDogJzBweCA2cHggNnB4IC0zcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggNnB4IDdweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEyOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMzogJzBweCA3cHggOHB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggN3B4IDlweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE1OiAnMHB4IDhweCA5cHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNjogJzBweCA4cHggMTBweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDhweCAxMXB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTg6ICcwcHggOXB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOTogJzBweCA5cHggMTJweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDEwcHggMTNweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIxOiAnMHB4IDEwcHggMTNweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDEwcHggMTRweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDExcHggMTRweCAtN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI0OiAnMHB4IDExcHggMTVweCAtN3B4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LXBlbnVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gICRzaGFkb3ctY29sb3I6IGlmKHR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4xNCksICRjb2xvcik7XG5cbiAgQHJldHVybiAoXG4gICAgMDogJzBweCAwcHggMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOiAnMHB4IDFweCAxcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggMnB4IDJweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMzogJzBweCAzcHggNHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA0OiAnMHB4IDRweCA1cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggNXB4IDhweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNjogJzBweCA2cHggMTBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNzogJzBweCA3cHggMTBweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgODogJzBweCA4cHggMTBweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgOTogJzBweCA5cHggMTJweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTA6ICcwcHggMTBweCAxNHB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCAxMXB4IDE1cHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEyOiAnMHB4IDEycHggMTdweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTM6ICcwcHggMTNweCAxOXB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCAxNHB4IDIxcHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE1OiAnMHB4IDE1cHggMjJweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTY6ICcwcHggMTZweCAyNHB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNzogJzBweCAxN3B4IDI2cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE4OiAnMHB4IDE4cHggMjhweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTk6ICcwcHggMTlweCAyOXB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMDogJzBweCAyMHB4IDMxcHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIxOiAnMHB4IDIxcHggMzNweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggMjJweCAzNXB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMzogJzBweCAyM3B4IDM2cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI0OiAnMHB4IDI0cHggMzhweCAzcHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICAkc2hhZG93LWNvbG9yOiBpZih0eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggM3B4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDFweCA1cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggMXB4IDhweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCAxcHggMTBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCAxcHggMTRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNjogJzBweCAxcHggMThweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNzogJzBweCAycHggMTZweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgODogJzBweCAzcHggMTRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgOTogJzBweCAzcHggMTZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTA6ICcwcHggNHB4IDE4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDRweCAyMHB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCA1cHggMjJweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTM6ICcwcHggNXB4IDI0cHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDVweCAyNnB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCA2cHggMjhweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTY6ICcwcHggNnB4IDMwcHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDZweCAzMnB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA3cHggMzRweCA2cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTk6ICcwcHggN3B4IDM2cHggNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDhweCAzOHB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCA4cHggNDBweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggOHB4IDQycHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDlweCA0NHB4IDhweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCA5cHggNDZweCA4cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tZHVyYXRpb246IDI4MG1zICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBlYXNpbmcgdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkbWF0LWZhc3Qtb3V0LXNsb3ctaW4tdGltaW5nLWZ1bmN0aW9uO1xuXG4vLyBUaGUgZGVmYXVsdCBjb2xvciBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kbWF0LWVsZXZhdGlvbi1jb2xvcjogYmxhY2sgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IG9wYWNpdHkgc2NhbGluZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kbWF0LWVsZXZhdGlvbi1vcGFjaXR5OiAxICFkZWZhdWx0O1xuXG4vLyBQcmVmaXggZm9yIGVsZXZhdGlvbi1yZWxhdGVkIHNlbGVjdG9ycy5cbiRfbWF0LWVsZXZhdGlvbi1wcmVmaXg6ICdtYXQtZWxldmF0aW9uLXonO1xuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyB0byBhbiBlbGVtZW50IHRvIGdpdmUgaXQgdGhlIGVsZXZhdGlvbiBzcGVjaWZpZWQgYnkgJHpWYWx1ZS5cbi8vIFRoZSAkelZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNC5cbkBtaXhpbiBtYXQtZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvcjogJG1hdC1lbGV2YXRpb24tY29sb3IsICRvcGFjaXR5OiAkbWF0LWVsZXZhdGlvbi1vcGFjaXR5KSB7XG4gIEBpZiB0eXBlLW9mKCR6VmFsdWUpICE9IG51bWJlciBvciBub3QgdW5pdGxlc3MoJHpWYWx1ZSkge1xuICAgIEBlcnJvciAnJHpWYWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyJztcbiAgfVxuICBAaWYgJHpWYWx1ZSA8IDAgb3IgJHpWYWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0JztcbiAgfVxuXG4gIGJveC1zaGFkb3c6ICN7bWFwLWdldChfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9LFxuICAgICAgICAgICAgICAje21hcC1nZXQoX2dldC1wZW51bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAtZ2V0KF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfTtcbn1cblxuQG1peGluIF9tYXQtdGhlbWUtZWxldmF0aW9uKCR6VmFsdWUsICR0aGVtZSwgJG9wYWNpdHk6ICRtYXQtZWxldmF0aW9uLW9wYWNpdHkpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGVsZXZhdGlvbi1jb2xvcjogbWFwLWdldCgkZm9yZWdyb3VuZCwgZWxldmF0aW9uKTtcbiAgJGVsZXZhdGlvbi1jb2xvci1vci1kZWZhdWx0OiBpZigkZWxldmF0aW9uLWNvbG9yID09IG51bGwsICRtYXQtZWxldmF0aW9uLWNvbG9yLCAkZWxldmF0aW9uLWNvbG9yKTtcblxuICBAaW5jbHVkZSBtYXQtZWxldmF0aW9uKCR6VmFsdWUsICRlbGV2YXRpb24tY29sb3Itb3ItZGVmYXVsdCwgJG9wYWNpdHkpO1xufVxuXG4vLyBBcHBsaWVzIHRoZSBlbGV2YXRpb24gdG8gYW4gZWxlbWVudCBpbiBhIG1hbm5lciB0aGF0IGFsbG93c1xuLy8gY29uc3VtZXJzIHRvIG92ZXJyaWRlIGl0IHZpYSB0aGUgTWF0ZXJpYWwgZWxldmF0aW9uIGNsYXNzZXMuXG5AbWl4aW4gbWF0LW92ZXJyaWRhYmxlLWVsZXZhdGlvbihcbiAgICAkelZhbHVlLFxuICAgICRjb2xvcjogJG1hdC1lbGV2YXRpb24tY29sb3IsXG4gICAgJG9wYWNpdHk6ICRtYXQtZWxldmF0aW9uLW9wYWNpdHkpIHtcbiAgJjpub3QoW2NsYXNzKj0nI3skX21hdC1lbGV2YXRpb24tcHJlZml4fSddKSB7XG4gICAgQGluY2x1ZGUgbWF0LWVsZXZhdGlvbigkelZhbHVlLCAkY29sb3IsICRvcGFjaXR5KTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oJHpWYWx1ZSwgJHRoZW1lLCAkb3BhY2l0eTogJG1hdC1lbGV2YXRpb24tb3BhY2l0eSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkZWxldmF0aW9uLWNvbG9yOiBtYXAtZ2V0KCRmb3JlZ3JvdW5kLCBlbGV2YXRpb24pO1xuICAkZWxldmF0aW9uLWNvbG9yLW9yLWRlZmF1bHQ6IGlmKCRlbGV2YXRpb24tY29sb3IgPT0gbnVsbCwgJG1hdC1lbGV2YXRpb24tY29sb3IsICRlbGV2YXRpb24tY29sb3IpO1xuXG4gIEBpbmNsdWRlIG1hdC1vdmVycmlkYWJsZS1lbGV2YXRpb24oJHpWYWx1ZSwgJGVsZXZhdGlvbi1jb2xvci1vci1kZWZhdWx0LCAkb3BhY2l0eSk7XG59XG5cbi8vIFJldHVybnMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgdmFsdWUgZm9yIGEgdHJhbnNpdGlvbiBwcm9wZXJ0eSBmb3IgZWxldmF0aW9uLlxuLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGlzIHVzZWZ1bCBpbiBzaXR1YXRpb25zIHdoZXJlIGEgY29tcG9uZW50IG5lZWRzIHRvIHRyYW5zaXRpb25cbi8vIG1vcmUgdGhhbiBvbmUgcHJvcGVydHkuXG4vL1xuLy8gLmZvbyB7XG4vLyAgIHRyYW5zaXRpb246IG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1wcm9wZXJ0eS12YWx1ZSgpLCBvcGFjaXR5IDEwMG1zIGVhc2U7XG4vLyB9XG5AZnVuY3Rpb24gbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKFxuICAgICRkdXJhdGlvbjogJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICBAcmV0dXJuIGJveC1zaGFkb3cgI3skZHVyYXRpb259ICN7JGVhc2luZ307XG59XG5cbi8vIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIG5lZWRlZCB0byBoYXZlIGFuIGVsZW1lbnQgdHJhbnNpdGlvbiBiZXR3ZWVuIGVsZXZhdGlvbnMuXG4vLyBUaGlzIG1peGluIHNob3VsZCBiZSBhcHBsaWVkIHRvIGVsZW1lbnRzIHdob3NlIGVsZXZhdGlvbiB2YWx1ZXMgd2lsbCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZWlyXG4vLyBjb250ZXh0IChlLmcuIHdoZW4gYWN0aXZlIG9yIGRpc2FibGVkKS5cbi8vXG4vLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBCb3RoIHRoaXMgbWl4aW4gYW5kIHRoZSBhYm92ZSBmdW5jdGlvbiB1c2UgZGVmYXVsdCBwYXJhbWV0ZXJzIHNvIHRoZXkgY2FuXG4vLyBiZSB1c2VkIGluIHRoZSBzYW1lIHdheSBieSBjbGllbnRzLlxuQG1peGluIG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbihcbiAgICAkZHVyYXRpb246ICRtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICAgJGVhc2luZzogJG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCRkdXJhdGlvbiwgJGVhc2luZyk7XG59XG5cbi8vIENvbG9yIHBhbGV0dGVzIGZyb20gdGhlIE1hdGVyaWFsIERlc2lnbiBzcGVjLlxuLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbG9yL1xuLy9cbi8vIENvbnRyYXN0IGNvbG9ycyBhcmUgaGFyZC1jb2RlZCBiZWNhdXNlIGl0IGlzIHRvbyBkaWZmaWN1bHQgKHByb2JhYmx5IGltcG9zc2libGUpIHRvXG4vLyBjYWxjdWxhdGUgdGhlbS4gVGhlc2UgY29udHJhc3QgY29sb3JzIGFyZSBwdWxsZWQgZnJvbSB0aGUgcHVibGljIE1hdGVyaWFsIERlc2lnbiBzcGVjIHN3YXRjaGVzLlxuLy8gV2hpbGUgdGhlIGNvbnRyYXN0IGNvbG9ycyBpbiB0aGUgc3BlYyBhcmUgbm90IHByZXNjcmlwdGl2ZSwgd2UgdXNlIHRoZW0gZm9yIGNvbnZlbmllbmNlLlxuXG5cbi8vIEBkZXByZWNhdGVkIHJlbmFtZWQgdG8gJGRhcmstcHJpbWFyeS10ZXh0LlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJGJsYWNrLTg3LW9wYWNpdHk6IHJnYmEoYmxhY2ssIDAuODcpO1xuLy8gQGRlcHJlY2F0ZWQgcmVuYW1lZCB0byAkbGlnaHQtcHJpbWFyeS10ZXh0LlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJHdoaXRlLTg3LW9wYWNpdHk6IHJnYmEod2hpdGUsIDAuODcpO1xuLy8gQGRlcHJlY2F0ZWQgdXNlICRkYXJrLVtzZWNvbmRhcnktdGV4dCxkaXNhYmxlZC10ZXh0LGRpdmlkZXJzLGZvY3VzZWRdIGluc3RlYWQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kYmxhY2stMTItb3BhY2l0eTogcmdiYShibGFjaywgMC4xMik7XG4vLyBAZGVwcmVjYXRlZCB1c2UgJGxpZ2h0LVtzZWNvbmRhcnktdGV4dCxkaXNhYmxlZC10ZXh0LGRpdmlkZXJzLGZvY3VzZWRdIGluc3RlYWQuXG4vLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4kd2hpdGUtMTItb3BhY2l0eTogcmdiYSh3aGl0ZSwgMC4xMik7XG4vLyBAZGVwcmVjYXRlZCB1c2UgJGRhcmstW3NlY29uZGFyeS10ZXh0LGRpc2FibGVkLXRleHQsZGl2aWRlcnMsZm9jdXNlZF0gaW5zdGVhZC5cbi8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiRibGFjay02LW9wYWNpdHk6IHJnYmEoYmxhY2ssIDAuMDYpO1xuLy8gQGRlcHJlY2F0ZWQgdXNlICRsaWdodC1bc2Vjb25kYXJ5LXRleHQsZGlzYWJsZWQtdGV4dCxkaXZpZGVycyxmb2N1c2VkXSBpbnN0ZWFkLlxuLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMFxuJHdoaXRlLTYtb3BhY2l0eTogcmdiYSh3aGl0ZSwgMC4wNik7XG5cbiRkYXJrLXByaW1hcnktdGV4dDogcmdiYShibGFjaywgMC44Nyk7XG4kZGFyay1zZWNvbmRhcnktdGV4dDogcmdiYShibGFjaywgMC41NCk7XG4kZGFyay1kaXNhYmxlZC10ZXh0OiByZ2JhKGJsYWNrLCAwLjM4KTtcbiRkYXJrLWRpdmlkZXJzOiByZ2JhKGJsYWNrLCAwLjEyKTtcbiRkYXJrLWZvY3VzZWQ6IHJnYmEoYmxhY2ssIDAuMTIpO1xuJGxpZ2h0LXByaW1hcnktdGV4dDogd2hpdGU7XG4kbGlnaHQtc2Vjb25kYXJ5LXRleHQ6IHJnYmEod2hpdGUsIDAuNyk7XG4kbGlnaHQtZGlzYWJsZWQtdGV4dDogcmdiYSh3aGl0ZSwgMC41KTtcbiRsaWdodC1kaXZpZGVyczogcmdiYSh3aGl0ZSwgMC4xMik7XG4kbGlnaHQtZm9jdXNlZDogcmdiYSh3aGl0ZSwgMC4xMik7XG5cbiRtYXQtcmVkOiAoXG4gIDUwOiAjZmZlYmVlLFxuICAxMDA6ICNmZmNkZDIsXG4gIDIwMDogI2VmOWE5YSxcbiAgMzAwOiAjZTU3MzczLFxuICA0MDA6ICNlZjUzNTAsXG4gIDUwMDogI2Y0NDMzNixcbiAgNjAwOiAjZTUzOTM1LFxuICA3MDA6ICNkMzJmMmYsXG4gIDgwMDogI2M2MjgyOCxcbiAgOTAwOiAjYjcxYzFjLFxuICBBMTAwOiAjZmY4YTgwLFxuICBBMjAwOiAjZmY1MjUyLFxuICBBNDAwOiAjZmYxNzQ0LFxuICBBNzAwOiAjZDUwMDAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtcGluazogKFxuICA1MDogI2ZjZTRlYyxcbiAgMTAwOiAjZjhiYmQwLFxuICAyMDA6ICNmNDhmYjEsXG4gIDMwMDogI2YwNjI5MixcbiAgNDAwOiAjZWM0MDdhLFxuICA1MDA6ICNlOTFlNjMsXG4gIDYwMDogI2Q4MWI2MCxcbiAgNzAwOiAjYzIxODViLFxuICA4MDA6ICNhZDE0NTcsXG4gIDkwMDogIzg4MGU0ZixcbiAgQTEwMDogI2ZmODBhYixcbiAgQTIwMDogI2ZmNDA4MSxcbiAgQTQwMDogI2Y1MDA1NyxcbiAgQTcwMDogI2M1MTE2MixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LXB1cnBsZTogKFxuICA1MDogI2YzZTVmNSxcbiAgMTAwOiAjZTFiZWU3LFxuICAyMDA6ICNjZTkzZDgsXG4gIDMwMDogI2JhNjhjOCxcbiAgNDAwOiAjYWI0N2JjLFxuICA1MDA6ICM5YzI3YjAsXG4gIDYwMDogIzhlMjRhYSxcbiAgNzAwOiAjN2IxZmEyLFxuICA4MDA6ICM2YTFiOWEsXG4gIDkwMDogIzRhMTQ4YyxcbiAgQTEwMDogI2VhODBmYyxcbiAgQTIwMDogI2UwNDBmYixcbiAgQTQwMDogI2Q1MDBmOSxcbiAgQTcwMDogI2FhMDBmZixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtZGVlcC1wdXJwbGU6IChcbiAgNTA6ICNlZGU3ZjYsXG4gIDEwMDogI2QxYzRlOSxcbiAgMjAwOiAjYjM5ZGRiLFxuICAzMDA6ICM5NTc1Y2QsXG4gIDQwMDogIzdlNTdjMixcbiAgNTAwOiAjNjczYWI3LFxuICA2MDA6ICM1ZTM1YjEsXG4gIDcwMDogIzUxMmRhOCxcbiAgODAwOiAjNDUyN2EwLFxuICA5MDA6ICMzMTFiOTIsXG4gIEExMDA6ICNiMzg4ZmYsXG4gIEEyMDA6ICM3YzRkZmYsXG4gIEE0MDA6ICM2NTFmZmYsXG4gIEE3MDA6ICM2MjAwZWEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWluZGlnbzogKFxuICA1MDogI2U4ZWFmNixcbiAgMTAwOiAjYzVjYWU5LFxuICAyMDA6ICM5ZmE4ZGEsXG4gIDMwMDogIzc5ODZjYixcbiAgNDAwOiAjNWM2YmMwLFxuICA1MDA6ICMzZjUxYjUsXG4gIDYwMDogIzM5NDlhYixcbiAgNzAwOiAjMzAzZjlmLFxuICA4MDA6ICMyODM1OTMsXG4gIDkwMDogIzFhMjM3ZSxcbiAgQTEwMDogIzhjOWVmZixcbiAgQTIwMDogIzUzNmRmZSxcbiAgQTQwMDogIzNkNWFmZSxcbiAgQTcwMDogIzMwNGZmZSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtYmx1ZTogKFxuICA1MDogI2UzZjJmZCxcbiAgMTAwOiAjYmJkZWZiLFxuICAyMDA6ICM5MGNhZjksXG4gIDMwMDogIzY0YjVmNixcbiAgNDAwOiAjNDJhNWY1LFxuICA1MDA6ICMyMTk2ZjMsXG4gIDYwMDogIzFlODhlNSxcbiAgNzAwOiAjMTk3NmQyLFxuICA4MDA6ICMxNTY1YzAsXG4gIDkwMDogIzBkNDdhMSxcbiAgQTEwMDogIzgyYjFmZixcbiAgQTIwMDogIzQ0OGFmZixcbiAgQTQwMDogIzI5NzlmZixcbiAgQTcwMDogIzI5NjJmZixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWxpZ2h0LWJsdWU6IChcbiAgNTA6ICNlMWY1ZmUsXG4gIDEwMDogI2IzZTVmYyxcbiAgMjAwOiAjODFkNGZhLFxuICAzMDA6ICM0ZmMzZjcsXG4gIDQwMDogIzI5YjZmNixcbiAgNTAwOiAjMDNhOWY0LFxuICA2MDA6ICMwMzliZTUsXG4gIDcwMDogIzAyODhkMSxcbiAgODAwOiAjMDI3N2JkLFxuICA5MDA6ICMwMTU3OWIsXG4gIEExMDA6ICM4MGQ4ZmYsXG4gIEEyMDA6ICM0MGM0ZmYsXG4gIEE0MDA6ICMwMGIwZmYsXG4gIEE3MDA6ICMwMDkxZWEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtY3lhbjogKFxuICA1MDogI2UwZjdmYSxcbiAgMTAwOiAjYjJlYmYyLFxuICAyMDA6ICM4MGRlZWEsXG4gIDMwMDogIzRkZDBlMSxcbiAgNDAwOiAjMjZjNmRhLFxuICA1MDA6ICMwMGJjZDQsXG4gIDYwMDogIzAwYWNjMSxcbiAgNzAwOiAjMDA5N2E3LFxuICA4MDA6ICMwMDgzOGYsXG4gIDkwMDogIzAwNjA2NCxcbiAgQTEwMDogIzg0ZmZmZixcbiAgQTIwMDogIzE4ZmZmZixcbiAgQTQwMDogIzAwZTVmZixcbiAgQTcwMDogIzAwYjhkNCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LXRlYWw6IChcbiAgNTA6ICNlMGYyZjEsXG4gIDEwMDogI2IyZGZkYixcbiAgMjAwOiAjODBjYmM0LFxuICAzMDA6ICM0ZGI2YWMsXG4gIDQwMDogIzI2YTY5YSxcbiAgNTAwOiAjMDA5Njg4LFxuICA2MDA6ICMwMDg5N2IsXG4gIDcwMDogIzAwNzk2YixcbiAgODAwOiAjMDA2OTVjLFxuICA5MDA6ICMwMDRkNDAsXG4gIEExMDA6ICNhN2ZmZWIsXG4gIEEyMDA6ICM2NGZmZGEsXG4gIEE0MDA6ICMxZGU5YjYsXG4gIEE3MDA6ICMwMGJmYTUsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJG1hdC1ncmVlbjogKFxuICA1MDogI2U4ZjVlOSxcbiAgMTAwOiAjYzhlNmM5LFxuICAyMDA6ICNhNWQ2YTcsXG4gIDMwMDogIzgxYzc4NCxcbiAgNDAwOiAjNjZiYjZhLFxuICA1MDA6ICM0Y2FmNTAsXG4gIDYwMDogIzQzYTA0NyxcbiAgNzAwOiAjMzg4ZTNjLFxuICA4MDA6ICMyZTdkMzIsXG4gIDkwMDogIzFiNWUyMCxcbiAgQTEwMDogI2I5ZjZjYSxcbiAgQTIwMDogIzY5ZjBhZSxcbiAgQTQwMDogIzAwZTY3NixcbiAgQTcwMDogIzAwYzg1MyxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtbGlnaHQtZ3JlZW46IChcbiAgNTA6ICNmMWY4ZTksXG4gIDEwMDogI2RjZWRjOCxcbiAgMjAwOiAjYzVlMWE1LFxuICAzMDA6ICNhZWQ1ODEsXG4gIDQwMDogIzljY2M2NSxcbiAgNTAwOiAjOGJjMzRhLFxuICA2MDA6ICM3Y2IzNDIsXG4gIDcwMDogIzY4OWYzOCxcbiAgODAwOiAjNTU4YjJmLFxuICA5MDA6ICMzMzY5MWUsXG4gIEExMDA6ICNjY2ZmOTAsXG4gIEEyMDA6ICNiMmZmNTksXG4gIEE0MDA6ICM3NmZmMDMsXG4gIEE3MDA6ICM2NGRkMTcsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQtbGltZTogKFxuICA1MDogI2Y5ZmJlNyxcbiAgMTAwOiAjZjBmNGMzLFxuICAyMDA6ICNlNmVlOWMsXG4gIDMwMDogI2RjZTc3NSxcbiAgNDAwOiAjZDRlMTU3LFxuICA1MDA6ICNjZGRjMzksXG4gIDYwMDogI2MwY2EzMyxcbiAgNzAwOiAjYWZiNDJiLFxuICA4MDA6ICM5ZTlkMjQsXG4gIDkwMDogIzgyNzcxNyxcbiAgQTEwMDogI2Y0ZmY4MSxcbiAgQTIwMDogI2VlZmY0MSxcbiAgQTQwMDogI2M2ZmYwMCxcbiAgQTcwMDogI2FlZWEwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRtYXQteWVsbG93OiAoXG4gIDUwOiAjZmZmZGU3LFxuICAxMDA6ICNmZmY5YzQsXG4gIDIwMDogI2ZmZjU5ZCxcbiAgMzAwOiAjZmZmMTc2LFxuICA0MDA6ICNmZmVlNTgsXG4gIDUwMDogI2ZmZWIzYixcbiAgNjAwOiAjZmRkODM1LFxuICA3MDA6ICNmYmMwMmQsXG4gIDgwMDogI2Y5YTgyNSxcbiAgOTAwOiAjZjU3ZjE3LFxuICBBMTAwOiAjZmZmZjhkLFxuICBBMjAwOiAjZmZmZjAwLFxuICBBNDAwOiAjZmZlYTAwLFxuICBBNzAwOiAjZmZkNjAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWFtYmVyOiAoXG4gIDUwOiAjZmZmOGUxLFxuICAxMDA6ICNmZmVjYjMsXG4gIDIwMDogI2ZmZTA4MixcbiAgMzAwOiAjZmZkNTRmLFxuICA0MDA6ICNmZmNhMjgsXG4gIDUwMDogI2ZmYzEwNyxcbiAgNjAwOiAjZmZiMzAwLFxuICA3MDA6ICNmZmEwMDAsXG4gIDgwMDogI2ZmOGYwMCxcbiAgOTAwOiAjZmY2ZjAwLFxuICBBMTAwOiAjZmZlNTdmLFxuICBBMjAwOiAjZmZkNzQwLFxuICBBNDAwOiAjZmZjNDAwLFxuICBBNzAwOiAjZmZhYjAwLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LW9yYW5nZTogKFxuICA1MDogI2ZmZjNlMCxcbiAgMTAwOiAjZmZlMGIyLFxuICAyMDA6ICNmZmNjODAsXG4gIDMwMDogI2ZmYjc0ZCxcbiAgNDAwOiAjZmZhNzI2LFxuICA1MDA6ICNmZjk4MDAsXG4gIDYwMDogI2ZiOGMwMCxcbiAgNzAwOiAjZjU3YzAwLFxuICA4MDA6ICNlZjZjMDAsXG4gIDkwMDogI2U2NTEwMCxcbiAgQTEwMDogI2ZmZDE4MCxcbiAgQTIwMDogI2ZmYWI0MCxcbiAgQTQwMDogI2ZmOTEwMCxcbiAgQTcwMDogI2ZmNmQwMCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogYmxhY2ssXG4gIClcbik7XG5cbiRtYXQtZGVlcC1vcmFuZ2U6IChcbiAgNTA6ICNmYmU5ZTcsXG4gIDEwMDogI2ZmY2NiYyxcbiAgMjAwOiAjZmZhYjkxLFxuICAzMDA6ICNmZjhhNjUsXG4gIDQwMDogI2ZmNzA0MyxcbiAgNTAwOiAjZmY1NzIyLFxuICA2MDA6ICNmNDUxMWUsXG4gIDcwMDogI2U2NGExOSxcbiAgODAwOiAjZDg0MzE1LFxuICA5MDA6ICNiZjM2MGMsXG4gIEExMDA6ICNmZjllODAsXG4gIEEyMDA6ICNmZjZlNDAsXG4gIEE0MDA6ICNmZjNkMDAsXG4gIEE3MDA6ICNkZDJjMDAsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWJyb3duOiAoXG4gIDUwOiAjZWZlYmU5LFxuICAxMDA6ICNkN2NjYzgsXG4gIDIwMDogI2JjYWFhNCxcbiAgMzAwOiAjYTE4ODdmLFxuICA0MDA6ICM4ZDZlNjMsXG4gIDUwMDogIzc5NTU0OCxcbiAgNjAwOiAjNmQ0YzQxLFxuICA3MDA6ICM1ZDQwMzcsXG4gIDgwMDogIzRlMzQyZSxcbiAgOTAwOiAjM2UyNzIzLFxuICBBMTAwOiAjZDdjY2M4LFxuICBBMjAwOiAjYmNhYWE0LFxuICBBNDAwOiAjOGQ2ZTYzLFxuICBBNzAwOiAjNWQ0MDM3LFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kbWF0LWdyZXk6IChcbiAgNTA6ICNmYWZhZmEsXG4gIDEwMDogI2Y1ZjVmNSxcbiAgMjAwOiAjZWVlZWVlLFxuICAzMDA6ICNlMGUwZTAsXG4gIDQwMDogI2JkYmRiZCxcbiAgNTAwOiAjOWU5ZTllLFxuICA2MDA6ICM3NTc1NzUsXG4gIDcwMDogIzYxNjE2MSxcbiAgODAwOiAjNDI0MjQyLFxuICA5MDA6ICMyMTIxMjEsXG4gIEExMDA6ICNmZmZmZmYsXG4gIEEyMDA6ICNlZWVlZWUsXG4gIEE0MDA6ICNiZGJkYmQsXG4gIEE3MDA6ICM2MTYxNjEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuLy8gQWxpYXMgZm9yIGFsdGVybmF0ZSBzcGVsbGluZy5cbiRtYXQtZ3JheTogJG1hdC1ncmV5O1xuXG4kbWF0LWJsdWUtZ3JleTogKFxuICA1MDogI2VjZWZmMSxcbiAgMTAwOiAjY2ZkOGRjLFxuICAyMDA6ICNiMGJlYzUsXG4gIDMwMDogIzkwYTRhZSxcbiAgNDAwOiAjNzg5MDljLFxuICA1MDA6ICM2MDdkOGIsXG4gIDYwMDogIzU0NmU3YSxcbiAgNzAwOiAjNDU1YTY0LFxuICA4MDA6ICMzNzQ3NGYsXG4gIDkwMDogIzI2MzIzOCxcbiAgQTEwMDogI2NmZDhkYyxcbiAgQTIwMDogI2IwYmVjNSxcbiAgQTQwMDogIzc4OTA5YyxcbiAgQTcwMDogIzQ1NWE2NCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4vLyBBbGlhcyBmb3IgYWx0ZXJuYXRlIHNwZWxsaW5nLlxuJG1hdC1ibHVlLWdyYXk6ICRtYXQtYmx1ZS1ncmV5O1xuXG5cbi8vIEJhY2tncm91bmQgcGFsZXR0ZSBmb3IgbGlnaHQgdGhlbWVzLlxuJG1hdC1saWdodC10aGVtZS1iYWNrZ3JvdW5kOiAoXG4gIHN0YXR1cy1iYXI6IG1hcF9nZXQoJG1hdC1ncmV5LCAzMDApLFxuICBhcHAtYmFyOiAgICBtYXBfZ2V0KCRtYXQtZ3JleSwgMTAwKSxcbiAgYmFja2dyb3VuZDogbWFwX2dldCgkbWF0LWdyZXksIDUwKSxcbiAgaG92ZXI6ICAgICAgcmdiYShibGFjaywgMC4wNCksIC8vIFRPRE8oa2FyYSk6IGNoZWNrIHN0eWxlIHdpdGggTWF0ZXJpYWwgRGVzaWduIFVYXG4gIGNhcmQ6ICAgICAgIHdoaXRlLFxuICBkaWFsb2c6ICAgICB3aGl0ZSxcbiAgZGlzYWJsZWQtYnV0dG9uOiByZ2JhKGJsYWNrLCAwLjEyKSxcbiAgcmFpc2VkLWJ1dHRvbjogd2hpdGUsXG4gIGZvY3VzZWQtYnV0dG9uOiAkZGFyay1mb2N1c2VkLFxuICBzZWxlY3RlZC1idXR0b246IG1hcF9nZXQoJG1hdC1ncmV5LCAzMDApLFxuICBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b246IG1hcF9nZXQoJG1hdC1ncmV5LCA0MDApLFxuICBkaXNhYmxlZC1idXR0b24tdG9nZ2xlOiBtYXBfZ2V0KCRtYXQtZ3JleSwgMjAwKSxcbiAgdW5zZWxlY3RlZC1jaGlwOiBtYXBfZ2V0KCRtYXQtZ3JleSwgMzAwKSxcbiAgZGlzYWJsZWQtbGlzdC1vcHRpb246IG1hcF9nZXQoJG1hdC1ncmV5LCAyMDApLFxuKTtcblxuLy8gQmFja2dyb3VuZCBwYWxldHRlIGZvciBkYXJrIHRoZW1lcy5cbiRtYXQtZGFyay10aGVtZS1iYWNrZ3JvdW5kOiAoXG4gIHN0YXR1cy1iYXI6IGJsYWNrLFxuICBhcHAtYmFyOiAgICBtYXBfZ2V0KCRtYXQtZ3JleSwgOTAwKSxcbiAgYmFja2dyb3VuZDogIzMwMzAzMCxcbiAgaG92ZXI6ICAgICAgcmdiYSh3aGl0ZSwgMC4wNCksIC8vIFRPRE8oa2FyYSk6IGNoZWNrIHN0eWxlIHdpdGggTWF0ZXJpYWwgRGVzaWduIFVYXG4gIGNhcmQ6ICAgICAgIG1hcF9nZXQoJG1hdC1ncmV5LCA4MDApLFxuICBkaWFsb2c6ICAgICBtYXBfZ2V0KCRtYXQtZ3JleSwgODAwKSxcbiAgZGlzYWJsZWQtYnV0dG9uOiByZ2JhKHdoaXRlLCAwLjEyKSxcbiAgcmFpc2VkLWJ1dHRvbjogbWFwLWdldCgkbWF0LWdyZXksIDgwMCksXG4gIGZvY3VzZWQtYnV0dG9uOiAkbGlnaHQtZm9jdXNlZCxcbiAgc2VsZWN0ZWQtYnV0dG9uOiBtYXBfZ2V0KCRtYXQtZ3JleSwgOTAwKSxcbiAgc2VsZWN0ZWQtZGlzYWJsZWQtYnV0dG9uOiBtYXBfZ2V0KCRtYXQtZ3JleSwgODAwKSxcbiAgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZTogYmxhY2ssXG4gIHVuc2VsZWN0ZWQtY2hpcDogbWFwX2dldCgkbWF0LWdyZXksIDcwMCksXG4gIGRpc2FibGVkLWxpc3Qtb3B0aW9uOiBibGFjayxcbik7XG5cbi8vIEZvcmVncm91bmQgcGFsZXR0ZSBmb3IgbGlnaHQgdGhlbWVzLlxuJG1hdC1saWdodC10aGVtZS1mb3JlZ3JvdW5kOiAoXG4gIGJhc2U6ICAgICAgICAgICAgICBibGFjayxcbiAgZGl2aWRlcjogICAgICAgICAgICRkYXJrLWRpdmlkZXJzLFxuICBkaXZpZGVyczogICAgICAgICAgJGRhcmstZGl2aWRlcnMsXG4gIGRpc2FibGVkOiAgICAgICAgICAkZGFyay1kaXNhYmxlZC10ZXh0LFxuICBkaXNhYmxlZC1idXR0b246ICAgcmdiYShibGFjaywgMC4yNiksXG4gIGRpc2FibGVkLXRleHQ6ICAgICAkZGFyay1kaXNhYmxlZC10ZXh0LFxuICBlbGV2YXRpb246ICAgICAgICAgYmxhY2ssXG4gIGhpbnQtdGV4dDogICAgICAgICAkZGFyay1kaXNhYmxlZC10ZXh0LFxuICBzZWNvbmRhcnktdGV4dDogICAgJGRhcmstc2Vjb25kYXJ5LXRleHQsXG4gIGljb246ICAgICAgICAgICAgICByZ2JhKGJsYWNrLCAwLjU0KSxcbiAgaWNvbnM6ICAgICAgICAgICAgIHJnYmEoYmxhY2ssIDAuNTQpLFxuICB0ZXh0OiAgICAgICAgICAgICAgcmdiYShibGFjaywgMC44NyksXG4gIHNsaWRlci1taW46ICAgICAgICByZ2JhKGJsYWNrLCAwLjg3KSxcbiAgc2xpZGVyLW9mZjogICAgICAgIHJnYmEoYmxhY2ssIDAuMjYpLFxuICBzbGlkZXItb2ZmLWFjdGl2ZTogcmdiYShibGFjaywgMC4zOCksXG4pO1xuXG4vLyBGb3JlZ3JvdW5kIHBhbGV0dGUgZm9yIGRhcmsgdGhlbWVzLlxuJG1hdC1kYXJrLXRoZW1lLWZvcmVncm91bmQ6IChcbiAgYmFzZTogICAgICAgICAgICAgIHdoaXRlLFxuICBkaXZpZGVyOiAgICAgICAgICAgJGxpZ2h0LWRpdmlkZXJzLFxuICBkaXZpZGVyczogICAgICAgICAgJGxpZ2h0LWRpdmlkZXJzLFxuICBkaXNhYmxlZDogICAgICAgICAgJGxpZ2h0LWRpc2FibGVkLXRleHQsXG4gIGRpc2FibGVkLWJ1dHRvbjogICByZ2JhKHdoaXRlLCAwLjMpLFxuICBkaXNhYmxlZC10ZXh0OiAgICAgJGxpZ2h0LWRpc2FibGVkLXRleHQsXG4gIGVsZXZhdGlvbjogICAgICAgICBibGFjayxcbiAgaGludC10ZXh0OiAgICAgICAgICRsaWdodC1kaXNhYmxlZC10ZXh0LFxuICBzZWNvbmRhcnktdGV4dDogICAgJGxpZ2h0LXNlY29uZGFyeS10ZXh0LFxuICBpY29uOiAgICAgICAgICAgICAgd2hpdGUsXG4gIGljb25zOiAgICAgICAgICAgICB3aGl0ZSxcbiAgdGV4dDogICAgICAgICAgICAgIHdoaXRlLFxuICBzbGlkZXItbWluOiAgICAgICAgd2hpdGUsXG4gIHNsaWRlci1vZmY6ICAgICAgICByZ2JhKHdoaXRlLCAwLjMpLFxuICBzbGlkZXItb2ZmLWFjdGl2ZTogcmdiYSh3aGl0ZSwgMC4zKSxcbik7XG5cblxuXG4vLyBGb3IgYSBnaXZlbiBodWUgaW4gYSBwYWxldHRlLCByZXR1cm4gdGhlIGNvbnRyYXN0IGNvbG9yIGZyb20gdGhlIG1hcCBvZiBjb250cmFzdCBwYWxldHRlcy5cbi8vIEBwYXJhbSAkY29sb3ItbWFwXG4vLyBAcGFyYW0gJGh1ZVxuQGZ1bmN0aW9uIG1hdC1jb250cmFzdCgkcGFsZXR0ZSwgJGh1ZSkge1xuICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkcGFsZXR0ZSwgY29udHJhc3QpLCAkaHVlKTtcbn1cblxuXG4vLyBDcmVhdGVzIGEgbWFwIG9mIGh1ZXMgdG8gY29sb3JzIGZvciBhIHRoZW1lLiBUaGlzIGlzIHVzZWQgdG8gZGVmaW5lIGEgdGhlbWUgcGFsZXR0ZSBpbiB0ZXJtc1xuLy8gb2YgdGhlIE1hdGVyaWFsIERlc2lnbiBodWVzLlxuLy8gQHBhcmFtICRjb2xvci1tYXBcbi8vIEBwYXJhbSAkcHJpbWFyeVxuLy8gQHBhcmFtICRsaWdodGVyXG5AZnVuY3Rpb24gbWF0LXBhbGV0dGUoJGJhc2UtcGFsZXR0ZSwgJGRlZmF1bHQ6IDUwMCwgJGxpZ2h0ZXI6IDEwMCwgJGRhcmtlcjogNzAwLCAkdGV4dDogJGRlZmF1bHQpIHtcbiAgJHJlc3VsdDogbWFwX21lcmdlKCRiYXNlLXBhbGV0dGUsIChcbiAgICBkZWZhdWx0OiBtYXAtZ2V0KCRiYXNlLXBhbGV0dGUsICRkZWZhdWx0KSxcbiAgICBsaWdodGVyOiBtYXAtZ2V0KCRiYXNlLXBhbGV0dGUsICRsaWdodGVyKSxcbiAgICBkYXJrZXI6IG1hcC1nZXQoJGJhc2UtcGFsZXR0ZSwgJGRhcmtlciksXG4gICAgdGV4dDogbWFwLWdldCgkYmFzZS1wYWxldHRlLCAkdGV4dCksXG5cbiAgICBkZWZhdWx0LWNvbnRyYXN0OiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGRlZmF1bHQpLFxuICAgIGxpZ2h0ZXItY29udHJhc3Q6IG1hdC1jb250cmFzdCgkYmFzZS1wYWxldHRlLCAkbGlnaHRlciksXG4gICAgZGFya2VyLWNvbnRyYXN0OiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGRhcmtlcilcbiAgKSk7XG5cbiAgLy8gRm9yIGVhY2ggaHVlIGluIHRoZSBwYWxldHRlLCBhZGQgYSBcIi1jb250cmFzdFwiIGNvbG9yIHRvIHRoZSBtYXAuXG4gIEBlYWNoICRodWUsICRjb2xvciBpbiAkYmFzZS1wYWxldHRlIHtcbiAgICAkcmVzdWx0OiBtYXBfbWVyZ2UoJHJlc3VsdCwgKFxuICAgICAgJyN7JGh1ZX0tY29udHJhc3QnOiBtYXQtY29udHJhc3QoJGJhc2UtcGFsZXR0ZSwgJGh1ZSlcbiAgICApKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuXG4vLyBHZXRzIGEgY29sb3IgZnJvbSBhIHRoZW1lIHBhbGV0dGUgKHRoZSBvdXRwdXQgb2YgbWF0LXBhbGV0dGUpLlxuLy8gVGhlIGh1ZSBjYW4gYmUgb25lIG9mIHRoZSBzdGFuZGFyZCB2YWx1ZXMgKDUwMCwgQTQwMCwgZXRjLiksIG9uZSBvZiB0aGUgdGhyZWUgcHJlY29uZmlndXJlZFxuLy8gaHVlcyAoZGVmYXVsdCwgbGlnaHRlciwgZGFya2VyKSwgb3IgYW55IG9mIHRoZSBhZm9yZW1lbnRpb25lZCBwcmVmaXhlZCB3aXRoIFwiLWNvbnRyYXN0XCIuXG4vL1xuLy8gQHBhcmFtICRjb2xvci1tYXAgVGhlIHRoZW1lIHBhbGV0dGUgKG91dHB1dCBvZiBtYXQtcGFsZXR0ZSkuXG4vLyBAcGFyYW0gJGh1ZSBUaGUgaHVlIGZyb20gdGhlIHBhbGV0dGUgdG8gdXNlLiBJZiB0aGlzIGlzIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLCBpdCB3aWxsXG4vLyAgICAgYmUgdHJlYXRlZCBhcyBvcGFjaXR5LlxuLy8gQHBhcmFtICRvcGFjaXR5IFRoZSBhbHBoYSBjaGFubmVsIHZhbHVlIGZvciB0aGUgY29sb3IuXG5AZnVuY3Rpb24gbWF0LWNvbG9yKCRwYWxldHRlLCAkaHVlOiBkZWZhdWx0LCAkb3BhY2l0eTogbnVsbCkge1xuICAvLyBJZiBodWVLZXkgaXMgYSBudW1iZXIgYmV0d2VlbiB6ZXJvIGFuZCBvbmUsIHRoZW4gaXQgYWN0dWFsbHkgY29udGFpbnMgYW5cbiAgLy8gb3BhY2l0eSB2YWx1ZSwgc28gcmVjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgZGVmYXVsdCBodWUgYW5kIHRoYXQgZ2l2ZW4gb3BhY2l0eS5cbiAgQGlmIHR5cGUtb2YoJGh1ZSkgPT0gbnVtYmVyIGFuZCAkaHVlID49IDAgYW5kICRodWUgPD0gMSB7XG4gICAgQHJldHVybiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQsICRodWUpO1xuICB9XG5cbiAgJGNvbG9yOiBtYXAtZ2V0KCRwYWxldHRlLCAkaHVlKTtcblxuICBAaWYgKHR5cGUtb2YoJGNvbG9yKSAhPSBjb2xvcikge1xuICAgIC8vIElmIHRoZSAkY29sb3IgcmVzb2x2ZWQgdG8gc29tZXRoaW5nIGRpZmZlcmVudCBmcm9tIGEgY29sb3IgKGUuZy4gYSBDU1MgdmFyaWFibGUpLFxuICAgIC8vIHdlIGNhbid0IGFwcGx5IHRoZSBvcGFjaXR5IGFueXdheSBzbyB3ZSByZXR1cm4gdGhlIHZhbHVlIGFzIGlzLCBvdGhlcndpc2UgU2FzcyBjYW5cbiAgICAvLyB0aHJvdyBhbiBlcnJvciBvciBvdXRwdXQgc29tZXRoaW5nIGludmFsaWQuXG4gICAgQHJldHVybiAkY29sb3I7XG4gIH1cblxuICBAcmV0dXJuIHJnYmEoJGNvbG9yLCBpZigkb3BhY2l0eSA9PSBudWxsLCBvcGFjaXR5KCRjb2xvciksICRvcGFjaXR5KSk7XG59XG5cblxuLy8gQ3JlYXRlcyBhIGNvbnRhaW5lciBvYmplY3QgZm9yIGEgbGlnaHQgdGhlbWUgdG8gYmUgZ2l2ZW4gdG8gaW5kaXZpZHVhbCBjb21wb25lbnQgdGhlbWUgbWl4aW5zLlxuQGZ1bmN0aW9uIG1hdC1saWdodC10aGVtZSgkcHJpbWFyeSwgJGFjY2VudCwgJHdhcm46IG1hdC1wYWxldHRlKCRtYXQtcmVkKSkge1xuICBAcmV0dXJuIChcbiAgICBwcmltYXJ5OiAkcHJpbWFyeSxcbiAgICBhY2NlbnQ6ICRhY2NlbnQsXG4gICAgd2FybjogJHdhcm4sXG4gICAgaXMtZGFyazogZmFsc2UsXG4gICAgZm9yZWdyb3VuZDogJG1hdC1saWdodC10aGVtZS1mb3JlZ3JvdW5kLFxuICAgIGJhY2tncm91bmQ6ICRtYXQtbGlnaHQtdGhlbWUtYmFja2dyb3VuZCxcbiAgKTtcbn1cblxuXG4vLyBDcmVhdGVzIGEgY29udGFpbmVyIG9iamVjdCBmb3IgYSBkYXJrIHRoZW1lIHRvIGJlIGdpdmVuIHRvIGluZGl2aWR1YWwgY29tcG9uZW50IHRoZW1lIG1peGlucy5cbkBmdW5jdGlvbiBtYXQtZGFyay10aGVtZSgkcHJpbWFyeSwgJGFjY2VudCwgJHdhcm46IG1hdC1wYWxldHRlKCRtYXQtcmVkKSkge1xuICBAcmV0dXJuIChcbiAgICBwcmltYXJ5OiAkcHJpbWFyeSxcbiAgICBhY2NlbnQ6ICRhY2NlbnQsXG4gICAgd2FybjogJHdhcm4sXG4gICAgaXMtZGFyazogdHJ1ZSxcbiAgICBmb3JlZ3JvdW5kOiAkbWF0LWRhcmstdGhlbWUtZm9yZWdyb3VuZCxcbiAgICBiYWNrZ3JvdW5kOiAkbWF0LWRhcmstdGhlbWUtYmFja2dyb3VuZCxcbiAgKTtcbn1cblxuXG5cbiRtYXQtcmlwcGxlLWNvbG9yLW9wYWNpdHk6IDAuMTtcblxuQG1peGluIG1hdC1yaXBwbGUoKSB7XG5cbiAgLy8gVGhlIGhvc3QgZWxlbWVudCBvZiBhbiBtYXQtcmlwcGxlIGRpcmVjdGl2ZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBwb3NpdGlvbiBvZiBcImFic29sdXRlXCIgb3JcbiAgLy8gXCJyZWxhdGl2ZVwiIHNvIHRoYXQgdGhlIHJpcHBsZXMgaW5zaWRlIGFyZSBjb3JyZWN0bHkgcG9zaXRpb25lZCByZWxhdGl2ZWx5IHRvIHRoZSBjb250YWluZXIuXG4gIC5tYXQtcmlwcGxlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZXZlcnkgcmlwcGxlIGNvbnRhaW5lciBzaG91bGQgaGF2ZSBwb3NpdGlvbjogcmVsYXRpdmUgaW4gZmF2b3Igb2YgY3JlYXRpbmcgYW5cbiAgICAvLyBlYXN5IEFQSSBmb3IgZGV2ZWxvcGVycyB1c2luZyB0aGUgTWF0UmlwcGxlIGRpcmVjdGl2ZS5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZCB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIH1cblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSwgdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuXG4gICAgLy8gSW4gaGlnaCBjb250cmFzdCBtb2RlIHRoZSByaXBwbGUgaXMgb3BhcXVlLCBjYXVzaW5nIGl0IHRvIG9ic3RydWN0IHRoZSBjb250ZW50LlxuICAgIEBpbmNsdWRlIGNkay1oaWdoLWNvbnRyYXN0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8qIFRoZW1lIGZvciB0aGUgcmlwcGxlIGVsZW1lbnRzLiovXG5AbWl4aW4gbWF0LXJpcHBsZS10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcF9nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQtYmFzZTogbWFwX2dldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgLy8gSWYgdGhlIHJpcHBsZSBjb2xvciBpcyByZXNvbHZlcyB0byBhIGNvbG9yICp0eXBlKiwgd2UgY2FuIHVzZSBpdCBkaXJlY3RseSwgb3RoZXJ3aXNlXG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpIHdlIGZhbGwgYmFjayB0byB1c2luZyB0aGUgY29sb3IgYW5kIHNldHRpbmcgYW4gb3BhY2l0eS5cbiAgICBAaWYgKHR5cGUtb2YoJGZvcmVncm91bmQtYmFzZSkgPT0gY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGZvcmVncm91bmQtYmFzZSwgJG1hdC1yaXBwbGUtY29sb3Itb3BhY2l0eSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JlZ3JvdW5kLWJhc2U7XG4gICAgICBvcGFjaXR5OiAkbWF0LXJpcHBsZS1jb2xvci1vcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gVXRpbGl0eSBmb3IgZmV0Y2hpbmcgYSBuZXN0ZWQgdmFsdWUgZnJvbSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCAkbmFtZSkge1xuICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkY29uZmlnLCAkbGV2ZWwpLCAkbmFtZSk7XG59XG5cbi8vIEdldHMgdGhlIGZvbnQgc2l6ZSBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBtYXQtZm9udC1zaXplKCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBmb250LXNpemUpO1xufVxuXG4vLyBHZXRzIHRoZSBsaW5lIGhlaWdodCBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbkBmdW5jdGlvbiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxpbmUtaGVpZ2h0KTtcbn1cblxuLy8gR2V0cyB0aGUgZm9udCB3ZWlnaHQgZm9yIGEgbGV2ZWwgaW5zaWRlIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBmb250LXdlaWdodCk7XG59XG5cbi8vIEdldHMgdGhlIGxldHRlciBzcGFjaW5nIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIG1hdC1sZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgbGV0dGVyLXNwYWNpbmcpO1xufVxuXG4vLyBHZXRzIHRoZSBmb250LWZhbWlseSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcgYW5kIHJlbW92ZXMgdGhlIHF1b3RlcyBhcm91bmQgaXQuXG5AZnVuY3Rpb24gbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbDogbnVsbCkge1xuICAkZm9udC1mYW1pbHk6IG1hcC1nZXQoJGNvbmZpZywgZm9udC1mYW1pbHkpO1xuXG4gIEBpZiAkbGV2ZWwgIT0gbnVsbCB7XG4gICAgJGZvbnQtZmFtaWx5OiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1mYW1pbHkpO1xuICB9XG5cbiAgLy8gR3VhcmQgYWdhaW5zdCB1bnF1b3Rpbmcgbm9uLXN0cmluZyB2YWx1ZXMsIGJlY2F1c2UgaXQncyBkZXByZWNhdGVkLlxuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGZvbnQtZmFtaWx5KSA9PSBzdHJpbmcsIHVucXVvdGUoJGZvbnQtZmFtaWx5KSwgJGZvbnQtZmFtaWx5KTtcbn1cblxuLy8gT3V0cHV0cyB0aGUgc2hvcnRoYW5kIGBmb250YCBDU1MgcHJvcGVydHksIGJhc2VkIG9uIGEgc2V0IG9mIHR5cG9ncmFwaHkgdmFsdWVzLiBGYWxscyBiYWNrIHRvXG4vLyB0aGUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIGlmIGEgdmFsdWUgdGhhdCBpc24ndCBhbGxvd2VkIGluIHRoZSBzaG9ydGhhbmQgaXMgcGFzc2VkIGluLlxuQG1peGluIG1hdC10eXBvZ3JhcGh5LWZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gSWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlIHNldCB0byBgaW5oZXJpdGAsIHdlIGNhbid0IHVzZSB0aGUgc2hvcnRoYW5kXG4gIC8vIHNvIHdlIGZhbGwgYmFjayB0byBwYXNzaW5nIGluIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gIEBpZiAoJGZvbnQtc2l6ZSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtc2l6ZSA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBudWxsKSB7XG5cbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHNob3J0aGFuZCBgZm9udGAsIGJlY2F1c2UgaXQncyB0aGUgbGVhc3QgYW1vdW50IG9mIGJ5dGVzLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBuZWVkIHRvIHVzZSBpbnRlcnBvbGF0aW9uIGZvciBgZm9udC1zaXplL2xpbmUtaGVpZ2h0YCBpbiBvcmRlciB0byBwcmV2ZW50XG4gICAgLy8gU2FzcyBmcm9tIGRpdmlkaW5nIHRoZSB0d28gdmFsdWVzLlxuICAgIGZvbnQ6ICRmb250LXdlaWdodCAjeyRmb250LXNpemV9LyN7JGxpbmUtaGVpZ2h0fSAkZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuLy8gQ29udmVydHMgYSB0eXBvZ3JhcGh5IGxldmVsIGludG8gQ1NTIHN0eWxlcy5cbkBtaXhpbiBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgJGxldmVsKSB7XG4gICRmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgJGxldmVsKTtcbiAgJGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgJGxldmVsKTtcblxuICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1mb250LXNob3J0aGFuZCgkZm9udC1zaXplLCAkZm9udC13ZWlnaHQsICRsaW5lLWhlaWdodCwgJGZvbnQtZmFtaWx5KTtcbiAgbGV0dGVyLXNwYWNpbmc6IG1hdC1sZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpO1xufVxuXG5cbkBtaXhpbiBtYXQtb3B0aW9uLXRoZW1lKCR0aGVtZSkge1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAubWF0LW9wdGlvbiB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksXG4gICAgJjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIEluIG11bHRpcGxlIG1vZGUgdGhlcmUgaXMgYSBjaGVja2JveCB0byBzaG93IHRoYXQgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICAmLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgJi5tYXQtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtb3B0aW9uLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LW9wdGlvbi10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1vcHRpb24ge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtb3B0Z3JvdXAtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1vcHRncm91cC1kaXNhYmxlZCAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtb3B0Z3JvdXAtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTIpO1xuICB9XG59XG5cblxuXG5AbWl4aW4gbWF0LXBzZXVkby1jaGVja2JveC10aGVtZSgkdGhlbWUpIHtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG5cbiAgLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogV2hpbGUgdGhlIHNwZWMgY2FsbHMgZm9yIHRyYW5zbHVjZW50IGJsYWNrcy93aGl0ZXMgZm9yIGRpc2FibGVkIGNvbG9ycyxcbiAgLy8gdGhpcyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBlbGVtZW50cyBsYXllcmVkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci4gVG8gZ2V0IGFyb3VuZCB0aGlzIHdlXG4gIC8vIGJsZW5kIHRoZSBjb2xvcnMgdG9nZXRoZXIgYmFzZWQgb24gdGhlIGJhc2UgY29sb3IgYW5kIHRoZSB0aGVtZSBiYWNrZ3JvdW5kLlxuICAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrOiAjNjg2ODY4O1xuICAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodDogI2IwYjBiMDtcbiAgJGRpc2FibGVkLWNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyaywgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQpO1xuICAkY29sb3JlZC1ib3gtc2VsZWN0b3I6ICcubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlJztcblxuICAubWF0LXBzZXVkby1jaGVja2JveCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCksIHNlY29uZGFyeS10ZXh0KTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIHtcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IobWFwLWdldCgkdGhlbWUsIHByaW1hcnkpKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gdGhlIGFjY2VudCBjb2xvci4gTm90ZSB0aGF0IHRoZSBwc2V1ZG8gY2hlY2tib3hlcyBhcmUgbWVhbnQgdG8gaW5oZXJpdCB0aGVcbiAgLy8gdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVpciBvd24gdGhlbWluZywgd2hpY2ggaXMgd2h5IHdlXG4gIC8vIGRvbid0IGF0dGFjaCB0byB0aGUgYG1hdC0qYCBjbGFzc2VzLiBBbHNvIG5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGJlIGJlbG93IGAubWF0LXByaW1hcnlgXG4gIC8vIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgY29sb3IgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIGNoZWNrYm94IGlzIGluc2lkZSBhIHBhcmVudCB0aGF0XG4gIC8vIGhhcyBgbWF0LWFjY2VudGAgYW5kIGlzIHBsYWNlZCBpbnNpZGUgYW5vdGhlciBwYXJlbnQgdGhhdCBoYXMgYG1hdC1wcmltYXJ5YC5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpKTtcbiAgfVxuXG4gIC5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLFxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKG1hcC1nZXQoJHRoZW1lLCB3YXJuKSk7XG4gIH1cblxuICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLFxuICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAmLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gUmVwcmVzZW50cyBhIHR5cG9ncmFwaHkgbGV2ZWwgZnJvbSB0aGUgTWF0ZXJpYWwgZGVzaWduIHNwZWMuXG5AZnVuY3Rpb24gbWF0LXR5cG9ncmFwaHktbGV2ZWwoXG4gICRmb250LXNpemUsXG4gICRsaW5lLWhlaWdodDogJGZvbnQtc2l6ZSxcbiAgJGZvbnQtd2VpZ2h0OiA0MDAsXG4gICRmb250LWZhbWlseTogbnVsbCxcbiAgJGxldHRlci1zcGFjaW5nOiBudWxsKSB7XG5cbiAgQHJldHVybiAoXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplLFxuICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQsXG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodCxcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LFxuICAgIGxldHRlci1zcGFjaW5nOiAkbGV0dGVyLXNwYWNpbmdcbiAgKTtcbn1cblxuLy8gUmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgdHlwb2dyYXBoeSBsZXZlbHMuXG4vLyBEZWZhdWx0cyBjb21lIGZyb20gaHR0cHM6Ly9tYXRlcmlhbC5pby9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbFxuLy8gTm90ZTogVGhlIHNwZWMgZG9lc24ndCBtZW50aW9uIGxldHRlciBzcGFjaW5nLiBUaGUgdmFsdWVzIGhlcmUgY29tZSBmcm9tXG4vLyBleWViYWxsaW5nIGl0IHVudGlsIGl0IGxvb2tlZCBleGFjdGx5IGxpa2UgdGhlIHNwZWMgZXhhbXBsZXMuXG5AZnVuY3Rpb24gbWF0LXR5cG9ncmFwaHktY29uZmlnKFxuICAkZm9udC1mYW1pbHk6ICAgJ1JvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmJyxcbiAgJGRpc3BsYXktNDogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDExMnB4LCAxMTJweCwgMzAwLCAkbGV0dGVyLXNwYWNpbmc6IC0wLjA1ZW0pLFxuICAkZGlzcGxheS0zOiAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoNTZweCwgNTZweCwgNDAwLCAkbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW0pLFxuICAkZGlzcGxheS0yOiAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoNDVweCwgNDhweCwgNDAwLCAkbGV0dGVyLXNwYWNpbmc6IC0wLjAwNWVtKSxcbiAgJGRpc3BsYXktMTogICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDM0cHgsIDQwcHgsIDQwMCksXG4gICRoZWFkbGluZTogICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgyNHB4LCAzMnB4LCA0MDApLFxuICAkdGl0bGU6ICAgICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMjBweCwgMzJweCwgNTAwKSxcbiAgJHN1YmhlYWRpbmctMjogIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE2cHgsIDI4cHgsIDQwMCksXG4gICRzdWJoZWFkaW5nLTE6ICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxNXB4LCAyNHB4LCA0MDApLFxuICAkYm9keS0yOiAgICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTRweCwgMjRweCwgNTAwKSxcbiAgJGJvZHktMTogICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDIwcHgsIDQwMCksXG4gICRjYXB0aW9uOiAgICAgICBtYXQtdHlwb2dyYXBoeS1sZXZlbCgxMnB4LCAyMHB4LCA0MDApLFxuICAkYnV0dG9uOiAgICAgICAgbWF0LXR5cG9ncmFwaHktbGV2ZWwoMTRweCwgMTRweCwgNTAwKSxcbiAgLy8gTGluZS1oZWlnaHQgbXVzdCBiZSB1bml0LWxlc3MgZnJhY3Rpb24gb2YgdGhlIGZvbnQtc2l6ZS5cbiAgJGlucHV0OiAgICAgICAgIG1hdC10eXBvZ3JhcGh5LWxldmVsKGluaGVyaXQsIDEuMTI1LCA0MDApXG4pIHtcblxuICAvLyBEZWNsYXJlIGFuIGluaXRpYWwgbWFwIHdpdGggYWxsIG9mIHRoZSBsZXZlbHMuXG4gICRjb25maWc6IChcbiAgICBkaXNwbGF5LTQ6ICAgICAgJGRpc3BsYXktNCxcbiAgICBkaXNwbGF5LTM6ICAgICAgJGRpc3BsYXktMyxcbiAgICBkaXNwbGF5LTI6ICAgICAgJGRpc3BsYXktMixcbiAgICBkaXNwbGF5LTE6ICAgICAgJGRpc3BsYXktMSxcbiAgICBoZWFkbGluZTogICAgICAgJGhlYWRsaW5lLFxuICAgIHRpdGxlOiAgICAgICAgICAkdGl0bGUsXG4gICAgc3ViaGVhZGluZy0yOiAgICRzdWJoZWFkaW5nLTIsXG4gICAgc3ViaGVhZGluZy0xOiAgICRzdWJoZWFkaW5nLTEsXG4gICAgYm9keS0yOiAgICAgICAgICRib2R5LTIsXG4gICAgYm9keS0xOiAgICAgICAgICRib2R5LTEsXG4gICAgY2FwdGlvbjogICAgICAgICRjYXB0aW9uLFxuICAgIGJ1dHRvbjogICAgICAgICAkYnV0dG9uLFxuICAgIGlucHV0OiAgICAgICAgICAkaW5wdXQsXG4gICk7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIHRoZSBsZXZlbHMgYW5kIHNldCB0aGUgYGZvbnQtZmFtaWx5YCBvZiB0aGUgb25lcyB0aGF0IGRvbid0IGhhdmUgb25lIHRvIHRoZSBiYXNlLlxuICAvLyBOb3RlIHRoYXQgU2FzcyBjYW4ndCBtb2RpZnkgbWFwcyBpbiBwbGFjZSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIG1lcmdlIGFuZCByZS1hc3NpZ24uXG4gIEBlYWNoICRrZXksICRsZXZlbCBpbiAkY29uZmlnIHtcbiAgICBAaWYgbWFwLWdldCgkbGV2ZWwsIGZvbnQtZmFtaWx5KSA9PSBudWxsIHtcbiAgICAgICRuZXctbGV2ZWw6IG1hcC1tZXJnZSgkbGV2ZWwsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG4gICAgICAkY29uZmlnOiBtYXAtbWVyZ2UoJGNvbmZpZywgKCRrZXk6ICRuZXctbGV2ZWwpKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgdGhlIGJhc2UgZm9udCBmYW1pbHkgdG8gdGhlIGNvbmZpZy5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJGNvbmZpZywgKGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHkpKTtcbn1cblxuLy8gQWRkcyB0aGUgYmFzZSB0eXBvZ3JhcGh5IHN0eWxlcywgYmFzZWQgb24gYSBjb25maWcuXG5AbWl4aW4gbWF0LWJhc2UtdHlwb2dyYXBoeSgkY29uZmlnLCAkc2VsZWN0b3I6ICcubWF0LXR5cG9ncmFwaHknKSB7XG4gIC5tYXQtaDEsIC5tYXQtaGVhZGxpbmUsICN7JHNlbGVjdG9yfSBoMSB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGhlYWRsaW5lKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMiwgLm1hdC10aXRsZSwgI3skc2VsZWN0b3J9IGgyIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgzLCAubWF0LXN1YmhlYWRpbmctMiwgI3skc2VsZWN0b3J9IGgzIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oNCwgLm1hdC1zdWJoZWFkaW5nLTEsICN7JHNlbGVjdG9yfSBoNCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoZSBzcGVjIGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0aGF0IHdvdWxkIGNvcnJlc3BvbmQgdG8gaDUgYW5kIGg2LCBidXQgd2UgYWRkIHRoZXNlIGZvclxuICAvLyBjb25zaXN0ZW5jeS4gVGhlIGZvbnQgc2l6ZXMgY29tZSBmcm9tIHRoZSBDaHJvbWUgdXNlciBhZ2VudCBzdHlsZXMgd2hpY2ggaGF2ZSBoNSBhdCAwLjgzZW1cbiAgLy8gYW5kIGg2IGF0IDAuNjdlbS5cbiAgLm1hdC1oNSwgI3skc2VsZWN0b3J9IGg1IHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3ttYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSl9ICogMC44MyksXG4gICAgICBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtaDYsICN7JHNlbGVjdG9yfSBoNiB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktZm9udC1zaG9ydGhhbmQoXG4gICAgICAgLy8gY2FsYyBpcyB1c2VkIGhlcmUgdG8gc3VwcG9ydCBjc3MgdmFyaWFibGVzXG4gICAgICBjYWxjKCN7bWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpfSAqIDAuNjcpLFxuICAgICAgbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWJvZHktc3Ryb25nLCAubWF0LWJvZHktMiB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LWJvZHksIC5tYXQtYm9keS0xLCAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTEpO1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc21hbGwsIC5tYXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGNhcHRpb24pO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTQsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktNCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGRpc3BsYXktNCk7XG4gICAgbWFyZ2luOiAwIDAgNTZweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0zLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTMge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBkaXNwbGF5LTMpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMiwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0yIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgZGlzcGxheS0yKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTEsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMSB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGRpc3BsYXktMSk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxufVxuXG5cblxuXG5AbWl4aW4gbWF0LWF1dG9jb21wbGV0ZS10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNCwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gU2VsZWN0ZWQgb3B0aW9ucyBpbiBhdXRvY29tcGxldGVzIHNob3VsZCBub3QgYmUgZ3JheSwgYnV0IHdlXG4gICAgLy8gb25seSB3YW50IHRvIG92ZXJyaWRlIHRoZSBiYWNrZ3JvdW5kIGZvciBzZWxlY3RlZCBvcHRpb25zIGlmXG4gICAgLy8gdGhleSBhcmUgKm5vdCogaW4gaG92ZXIgb3IgZm9jdXMgc3RhdGUuIFRoaXMgY2hhbmdlIGhhcyB0byBiZVxuICAgIC8vIG1hZGUgaGVyZSBiZWNhdXNlIGJhc2Ugb3B0aW9uIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlXG4gICAgLy8gYXV0b2NvbXBsZXRlIGFuZCB0aGUgc2VsZWN0LlxuICAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG5cbiAgICAgICY6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbkBtaXhpbiBtYXQtYXV0b2NvbXBsZXRlLXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cbi8vIFRoaXMgY29udGFpbnMgYWxsIG9mIHRoZSBzdHlsZXMgZm9yIHRoZSBiYWRnZVxuLy8gcmF0aGVyIHRoYW4ganVzdCB0aGUgY29sb3IvdGhlbWUgYmVjYXVzZSBvZlxuLy8gbm8gc3R5bGUgc2hlZXQgc3VwcG9ydCBmb3IgZGlyZWN0aXZlcy5cblxuXG5cblxuXG4kbWF0LWJhZGdlLWZvbnQtc2l6ZTogMTJweDtcbiRtYXQtYmFkZ2UtZm9udC13ZWlnaHQ6IDYwMDtcbiRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplOiAyMnB4ICFkZWZhdWx0O1xuJG1hdC1iYWRnZS1zbWFsbC1zaXplOiAkbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZSAtIDY7XG4kbWF0LWJhZGdlLWxhcmdlLXNpemU6ICRtYXQtYmFkZ2UtZGVmYXVsdC1zaXplICsgNjtcblxuLy8gTWl4aW4gZm9yIGJ1aWxkaW5nIG9mZnNldCBnaXZlbiBkaWZmZXJlbnQgc2l6ZXNcbkBtaXhpbiBfbWF0LWJhZGdlLXNpemUoJHNpemUpIHtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJHNpemU7XG4gIH1cblxuICAmLm1hdC1iYWRnZS1hYm92ZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHRvcDogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWxvdyB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJvdHRvbTogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogYXV0bztcbiAgICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2Utb3ZlcmxhcCB7XG4gICAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJhZGdlLXRoZW1lKCR0aGVtZSkge1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG5cbiAgICBAaW5jbHVkZSBjZGstaGlnaC1jb250cmFzdCB7XG4gICAgICBvdXRsaW5lOiBzb2xpZCAxcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtYWNjZW50IHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLXdhcm4ge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1oaWRkZW4ge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtZGlzYWJsZWQge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAkYXBwLWJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2JhY2tncm91bmQnKTtcbiAgICAgICRiYWRnZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgICAvLyBUaGUgZGlzYWJsZWQgY29sb3IgdXN1YWxseSBoYXMgc29tZSBraW5kIG9mIG9wYWNpdHksIGJ1dCBiZWNhdXNlIHRoZSBiYWRnZSBpcyBvdmVybGF5ZWRcbiAgICAgIC8vIG9uIHRvcCBvZiBzb21ldGhpbmcgZWxzZSwgaXQgd29uJ3QgbG9vayBnb29kIGlmIGl0J3Mgb3BhcXVlLiBJZiBpdCBpcyBhIGNvbG9yICp0eXBlKixcbiAgICAgIC8vIHdlIGNvbnZlcnQgaXQgaW50byBhIHNvbGlkIGNvbG9yIGJ5IHRha2luZyB0aGUgb3BhY2l0eSBmcm9tIHRoZSByZ2JhIHZhbHVlIGFuZCB1c2luZ1xuICAgICAgLy8gdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kIHdoZW5cbiAgICAgIC8vIG1peGluZyB0aGUgY29sb3JzIHRvZ2V0aGVyLlxuICAgICAgQGlmICh0eXBlLW9mKCRiYWRnZS1jb2xvcikgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGFwcC1iYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgICAkYmFkZ2Utb3BhY2l0eTogb3BhY2l0eSgkYmFkZ2UtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBtaXgoJGFwcC1iYWNrZ3JvdW5kLCByZ2JhKCRiYWRnZS1jb2xvciwgMSksICgxIC0gJGJhZGdlLW9wYWNpdHkpICogMTAwJSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRiYWRnZS1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAubmctYW5pbWF0ZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnQsXG4gIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIFRoZSBhY3RpdmUgY2xhc3MgaXMgYWRkZWQgYWZ0ZXIgdGhlIGVsZW1lbnQgaXMgYWRkZWRcbiAgLy8gc28gaXQgY2FuIGFuaW1hdGUgc2NhbGUgdG8gZGVmYXVsdFxuICAubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZSB7XG4gICAgLy8gU2NhbGUgdG8gYG5vbmVgIGluc3RlYWQgb2YgYDFgIHRvIGF2b2lkIGJsdXJyeSB0ZXh0IGluIHNvbWUgYnJvd3NlcnMuXG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1zbWFsbCB7XG4gICAgQGluY2x1ZGUgX21hdC1iYWRnZS1zaXplKCRtYXQtYmFkZ2Utc21hbGwtc2l6ZSk7XG4gIH1cbiAgLm1hdC1iYWRnZS1tZWRpdW0ge1xuICAgIEBpbmNsdWRlIF9tYXQtYmFkZ2Utc2l6ZSgkbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZSk7XG4gIH1cbiAgLm1hdC1iYWRnZS1sYXJnZSB7XG4gICAgQGluY2x1ZGUgX21hdC1iYWRnZS1zaXplKCRtYXQtYmFkZ2UtbGFyZ2Utc2l6ZSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1iYWRnZS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXdlaWdodDogJG1hdC1iYWRnZS1mb250LXdlaWdodDtcbiAgICBmb250LXNpemU6ICRtYXQtYmFkZ2UtZm9udC1zaXplO1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgLy8gU2V0IHRoZSBmb250IHNpemUgdG8gNzUlIG9mIHRoZSBvcmlnaW5hbC5cbiAgICBmb250LXNpemU6ICRtYXQtYmFkZ2UtZm9udC1zaXplICogMC43NTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXNpemU6ICRtYXQtYmFkZ2UtZm9udC1zaXplICogMjtcbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtYm90dG9tLXNoZWV0LXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMTYsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtYm90dG9tLXNoZWV0LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cblxuXG5cblxuJF9tYXQtYnV0dG9uLXJpcHBsZS1vcGFjaXR5OiAwLjE7XG5cbi8vIEFwcGxpZXMgYSBmb2N1cyBzdHlsZSB0byBhbiBtYXQtYnV0dG9uIGVsZW1lbnQgZm9yIGVhY2ggb2YgdGhlIHN1cHBvcnRlZCBwYWxldHRlcy5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LWNvbG9yKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcblxuICAmLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gIH1cblxuICAmLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHdhcm4pO1xuICB9XG5cbiAgJltkaXNhYmxlZF0gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUuIElmIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS4gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZ1xuLy8gb24gYSBDU1MgdmFyaWFibGUsIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgJGh1ZSwgJG9wYWNpdHkpIHtcbiAgJGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgJGh1ZSwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmICh0eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfbWF0LWJ1dHRvbi1yaXBwbGUtY29sb3IoJHRoZW1lLCAkaHVlLCAkb3BhY2l0eTogJF9tYXQtYnV0dG9uLXJpcHBsZS1vcGFjaXR5KSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tcmlwcGxlLWJhY2tncm91bmQoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfbWF0LWJ1dHRvbi1yaXBwbGUtYmFja2dyb3VuZCgkYWNjZW50LCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXJpcHBsZS1iYWNrZ3JvdW5kKCR3YXJuLCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gQXBwbGllcyBhIHByb3BlcnR5IHRvIGFuIG1hdC1idXR0b24gZWxlbWVudCBmb3IgZWFjaCBvZiB0aGUgc3VwcG9ydGVkIHBhbGV0dGVzLlxuQG1peGluIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCR0aGVtZSwgJHByb3BlcnR5LCAkaHVlKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICYubWF0LXByaW1hcnkge1xuICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCRwcmltYXJ5LCAkaHVlKTtcbiAgfVxuICAmLm1hdC1hY2NlbnQge1xuICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCRhY2NlbnQsICRodWUpO1xuICB9XG4gICYubWF0LXdhcm4ge1xuICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCR3YXJuLCAkaHVlKTtcbiAgfVxuXG4gICYubWF0LXByaW1hcnksICYubWF0LWFjY2VudCwgJi5tYXQtd2FybiwgJltkaXNhYmxlZF0ge1xuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICRwYWxldHRlOiBpZigkcHJvcGVydHkgPT0gJ2NvbG9yJywgJGZvcmVncm91bmQsICRiYWNrZ3JvdW5kKTtcbiAgICAgICN7JHByb3BlcnR5fTogbWF0LWNvbG9yKCRwYWxldHRlLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWJ1dHRvbi10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1idXR0b24sIC5tYXQtaWNvbi1idXR0b24sIC5tYXQtc3Ryb2tlZC1idXR0b24ge1xuICAgIC8vIEJ1dHRvbnMgd2l0aG91dCBhIGJhY2tncm91bmQgY29sb3Igc2hvdWxkIGluaGVyaXQgdGhlIGZvbnQgY29sb3IuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvXG4gICAgLy8gZW5zdXJlIHRoYXQgdGhlIGJ1dHRvbiBpcyByZWFkYWJsZSBvbiBjdXN0b20gYmFja2dyb3VuZCBjb2xvcnMuIEl0J3Mgd3JvbmcgdG8gYWx3YXlzIGFzc3VtZVxuICAgIC8vIHRoYXQgdGhvc2UgYnV0dG9ucyBhcmUgYWx3YXlzIHBsYWNlZCBpbnNpZGUgb2YgY29udGFpbmVycyB3aXRoIHRoZSBkZWZhdWx0IGJhY2tncm91bmRcbiAgICAvLyBjb2xvciBvZiB0aGUgdGhlbWUgKGUuZy4gdGhlbWVkIHRvb2xiYXJzKS5cbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCR0aGVtZSwgJ2NvbG9yJywgdGV4dCk7XG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tZm9jdXMtb3ZlcmxheS1jb2xvcigkdGhlbWUpO1xuXG4gICAgLy8gU2V0dXAgdGhlIHJpcHBsZSBjb2xvciB0byBiZSBiYXNlZCBvbiB0aGUgdGV4dCBjb2xvci4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHJpcHBsZXNcbiAgICAvLyBhcmUgbWF0Y2hpbmcgd2l0aCB0aGUgY3VycmVudCB0aGVtZSBwYWxldHRlIGFuZCBhcmUgaW4gY29udHJhc3QgdG8gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICAvLyAoZS5nIGluIHRoZW1lZCB0b29sYmFycykuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBvcGFjaXR5OiAkX21hdC1idXR0b24tcmlwcGxlLW9wYWNpdHk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZDogbWFwX2dldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gIH1cblxuICAvLyBOb3RlOiB0aGlzIG5lZWRzIGEgYml0IGV4dHJhIHNwZWNpZmljaXR5LCBiZWNhdXNlIHdlJ3JlIG5vdCBndWFyYW50ZWVkIHRoZSBpbmNsdXNpb25cbiAgLy8gb3JkZXIgb2YgdGhlIHRoZW1lIHN0eWxlcyBhbmQgdGhlIGJ1dHRvbiByZXNldCBtYXkgZW5kIHVwIHJlc2V0dGluZyB0aGlzIGFzIHdlbGwuXG4gIC5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtkaXNhYmxlZF0pIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWZsYXQtYnV0dG9uLCAubWF0LXJhaXNlZC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICAvLyBEZWZhdWx0IGZvbnQgYW5kIGJhY2tncm91bmQgY29sb3Igd2hlbiBub3QgdXNpbmcgYW55IGNvbG9yIHBhbGV0dGUuXG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCByYWlzZWQtYnV0dG9uKTtcblxuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXRoZW1lLXByb3BlcnR5KCR0aGVtZSwgJ2NvbG9yJywgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgQGluY2x1ZGUgX21hdC1idXR0b24tdGhlbWUtcHJvcGVydHkoJHRoZW1lLCAnYmFja2dyb3VuZC1jb2xvcicsIGRlZmF1bHQpO1xuICAgIEBpbmNsdWRlIF9tYXQtYnV0dG9uLXJpcHBsZS1jb2xvcigkdGhlbWUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zdHJva2VkLWJ1dHRvbiwgLm1hdC1mbGF0LWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMCwgJHRoZW1lKTtcbiAgfVxuXG4gIC5tYXQtcmFpc2VkLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMiwgJHRoZW1lKTtcblxuICAgICY6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig4LCAkdGhlbWUpO1xuICAgIH1cblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICR0aGVtZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDYsICR0aGVtZSk7XG5cbiAgICAmOm5vdChbZGlzYWJsZWRdKTphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMTIsICR0aGVtZSk7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMCwgJHRoZW1lKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1idXR0b24tdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtYnV0dG9uLCAubWF0LXJhaXNlZC1idXR0b24sIC5tYXQtaWNvbi1idXR0b24sIC5tYXQtc3Ryb2tlZC1idXR0b24sXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtYnV0dG9uLXRvZ2dsZS10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGRpdmlkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMiwgJHRoZW1lKTtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuXG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBmb2N1c2VkLWJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG5cbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGZvY3VzZWQtYnV0dG9uLCAxKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGJvcmRlci1sZWZ0OiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgIGJvcmRlci1yaWdodDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwge1xuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBzZWxlY3RlZC1idXR0b24pO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcblxuICAgICYubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24tdG9nZ2xlKTtcblxuICAgICYubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIH1cblxuICAgICYubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIHNlbGVjdGVkLWRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxcbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIGJvcmRlcjogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtYnV0dG9uLXRvZ2dsZS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtY2FyZC10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWNhcmQge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDEsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgIC8vIE5lZWRzIGV4dHJhIHNwZWNpZmljaXR5IHRvIGJlIGFibGUgdG8gb3ZlcnJpZGUgdGhlIGVsZXZhdGlvbiBzZWxlY3RvcnMuXG4gICAgJi5tYXQtY2FyZC1mbGF0IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICR0aGVtZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYXJkLXN1YnRpdGxlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1jYXJkLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWNhcmQge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWNhcmQtdGl0bGUge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgaGVhZGxpbmUpO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgdGl0bGUpO1xuICB9XG5cbiAgLm1hdC1jYXJkLXN1YnRpdGxlLFxuICAubWF0LWNhcmQtY29udGVudCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtY2hlY2tib3gtdGhlbWUoJHRoZW1lKSB7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG5cbiAgLy8gVGhlIGNvbG9yIG9mIHRoZSBjaGVja2JveCdzIGNoZWNrbWFyayAvIG1peGVkbWFyay5cbiAgJGNoZWNrYm94LW1hcmstY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG5cbiAgLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogV2hpbGUgdGhlIHNwZWMgY2FsbHMgZm9yIHRyYW5zbHVjZW50IGJsYWNrcy93aGl0ZXMgZm9yIGRpc2FibGVkIGNvbG9ycyxcbiAgLy8gdGhpcyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBlbGVtZW50cyBsYXllcmVkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci4gVG8gZ2V0IGFyb3VuZCB0aGlzIHdlXG4gIC8vIGJsZW5kIHRoZSBjb2xvcnMgdG9nZXRoZXIgYmFzZWQgb24gdGhlIGJhc2UgY29sb3IgYW5kIHRoZSB0aGVtZSBiYWNrZ3JvdW5kLlxuICAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrOiAjNjg2ODY4O1xuICAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodDogI2IwYjBiMDtcbiAgJGRpc2FibGVkLWNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyaywgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQpO1xuXG4gIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrbWFyayB7XG4gICAgZmlsbDogJGNoZWNrYm94LW1hcmstY29sb3I7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoIHtcbiAgICAvLyAhaW1wb3J0YW50IGlzIG5lZWRlZCBoZXJlIGJlY2F1c2UgYSBzdHJva2UgbXVzdCBiZSBzZXQgYXMgYW5cbiAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIFNWRyBpbiBvcmRlciBmb3IgbGluZSBhbmltYXRpb24gdG8gd29yayBwcm9wZXJseS5cbiAgICBzdHJva2U6ICRjaGVja2JveC1tYXJrLWNvbG9yICFpbXBvcnRhbnQ7XG5cbiAgICBAaW5jbHVkZSBjZGstaGlnaC1jb250cmFzdChibGFjay1vbi13aGl0ZSkge1xuICAgICAgLy8gSGF2aW5nIHRoZSBvbmUgYWJvdmUgYmUgIWltcG9ydGFudCBlbmRzIHVwIG92ZXJyaWRpbmcgdGhlIGJyb3dzZXIncyBhdXRvbWF0aWNcbiAgICAgIC8vIGNvbG9yIGludmVyc2lvbiBzbyB3ZSBuZWVkIHRvIHJlLWludmVydCBpdCBvdXJzZWx2ZXMgZm9yIGJsYWNrLW9uLXdoaXRlLlxuICAgICAgc3Ryb2tlOiAjMDAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveC1taXhlZG1hcmsge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjaGVja2JveC1tYXJrLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLCAubWF0LWNoZWNrYm94LWNoZWNrZWQge1xuICAgICYubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWRpc2FibGVkIHtcbiAgICAmLm1hdC1jaGVja2JveC1jaGVja2VkLFxuICAgICYubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkge1xuICAgICAgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGNkay1oaWdoLWNvbnRyYXN0IHtcbiAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG9uZSBpcyBtb3ZlZCBkb3duIGhlcmUgc28gaXQgY2FuIHRhcmdldCBib3RoXG4gIC8vIHRoZSB0aGVtZSBjb2xvcnMgYW5kIHRoZSBkaXNhYmxlZCBzdGF0ZS5cbiAgQGluY2x1ZGUgY2RrLWhpZ2gtY29udHJhc3Qge1xuICAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICAvLyBOZWVkcyB0byBiZSByZW1vdmVkIGJlY2F1c2UgaXQgaGlkZXMgdGhlIGNoZWNrYm94IG91dGxpbmUuXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN3aXRjaCB0aGlzIHRvIGEgc29saWQgY29sb3Igc2luY2Ugd2UncmUgdXNpbmcgYG9wYWNpdHlgXG4gIC8vIHRvIGNvbnRyb2wgaG93IG9wYXF1ZSB0aGUgcmlwcGxlIHNob3VsZCBiZS5cbiAgLm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXBfZ2V0KG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKSwgYmFzZSk7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLFxuICAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkge1xuICAgICYubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1jaGVja2JveC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1jaGVja2JveCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5cblxuXG5cblxuJG1hdC1jaGlwLXJlbW92ZS1mb250LXNpemU6IDE4cHg7XG5cbkBtaXhpbiBtYXQtY2hpcHMtY29sb3IoJGZvcmVncm91bmQsICRiYWNrZ3JvdW5kKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kO1xuICBjb2xvcjogJGZvcmVncm91bmQ7XG5cbiAgLm1hdC1jaGlwLXJlbW92ZSB7XG4gICAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoaXBzLXRoZW1lLWNvbG9yKCRwYWxldHRlKSB7XG4gIEBpbmNsdWRlIG1hdC1jaGlwcy1jb2xvcihtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpLCBtYXQtY29sb3IoJHBhbGV0dGUpKTtcblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QsIDAuMSk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1jaGlwcy10aGVtZSgkdGhlbWUpIHtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgJHVuc2VsZWN0ZWQtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCB1bnNlbGVjdGVkLWNoaXApO1xuICAkdW5zZWxlY3RlZC1mb3JlZ3JvdW5kOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCB7XG4gICAgQGluY2x1ZGUgbWF0LWNoaXBzLWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDMsICR0aGVtZSk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWNoaXAtZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcF9nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBtYXQtY2hpcHMtdGhlbWUtY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgbWF0LWNoaXBzLXRoZW1lLWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgbWF0LWNoaXBzLXRoZW1lLWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWNoaXBzLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWNoaXAge1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTIpO1xuICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcblxuICAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLFxuICAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb24ge1xuICAgICAgZm9udC1zaXplOiAkbWF0LWNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXRhYmxlLXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdGFibGUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdGFibGUgdGhlYWQsIC5tYXQtdGFibGUgdGJvZHksIC5tYXQtdGFibGUgdGZvb3QsXG4gIG1hdC1oZWFkZXItcm93LCBtYXQtcm93LCBtYXQtZm9vdGVyLXJvdyxcbiAgW21hdC1oZWFkZXItcm93XSwgW21hdC1yb3ddLCBbbWF0LWZvb3Rlci1yb3ddLFxuICAubWF0LXRhYmxlLXN0aWNreSB7XG4gICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgfVxuXG4gIG1hdC1yb3csIG1hdC1oZWFkZXItcm93LCBtYXQtZm9vdGVyLXJvdyxcbiAgdGgubWF0LWhlYWRlci1jZWxsLCB0ZC5tYXQtY2VsbCwgdGQubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRhYmxlLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXRhYmxlIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtY2VsbCwgLm1hdC1mb290ZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cblxuXG5cblxuJG1hdC1kYXRlcGlja2VyLXNlbGVjdGVkLXRvZGF5LWJveC1zaGFkb3ctd2lkdGg6IDFweDtcbiRtYXQtZGF0ZXBpY2tlci1zZWxlY3RlZC1mYWRlLWFtb3VudDogMC42O1xuJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50OiAwLjI7XG4kbWF0LWNhbGVuZGFyLWJvZHktZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xuJG1hdC1jYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTogMTFweCAhZGVmYXVsdDtcblxuQG1peGluIF9tYXQtZGF0ZXBpY2tlci1jb2xvcigkcGFsZXR0ZSkge1xuICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgICRiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHBhbGV0dGUpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRiYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogZmFkZS1vdXQoJGJhY2tncm91bmQsICRtYXQtZGF0ZXBpY2tlci1zZWxlY3RlZC1mYWRlLWFtb3VudCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIElmIHdlIGNvdWxkbid0IHJlc29sdmUgdG8gYmFja2dyb3VuZCB0byBhIGNvbG9yIChlLmcuIGl0J3MgYSBDU1MgdmFyaWFibGUpLFxuICAgICAgLy8gZmFsbCBiYWNrIHRvIGZhZGluZyB0aGUgY29udGVudCBvdXQgdmlhIGBvcGFjaXR5YC5cbiAgICAgIG9wYWNpdHk6ICRtYXQtZGF0ZXBpY2tlci10b2RheS1mYWRlLWFtb3VudDtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwICRtYXQtZGF0ZXBpY2tlci1zZWxlY3RlZC10b2RheS1ib3gtc2hhZG93LXdpZHRoXG4gICAgICAgICAgICAgICAgbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRhdGVwaWNrZXItdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG5cbiAgLm1hdC1jYWxlbmRhci1hcnJvdyB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBpY29uKTtcbiAgfVxuXG4gIC8vIFRoZSBwcmV2L25leHQgYnV0dG9ucyBuZWVkIGEgYml0IG1vcmUgc3BlY2lmaWNpdHkgdG9cbiAgLy8gYXZvaWQgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgdGhlIC5tYXQtaWNvbi1idXR0b24uXG4gIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUsXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBpY29uKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyLFxuICAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZSxcbiAgLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZSB7XG4gICAgJiA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpIHtcbiAgICAvLyBOb3RlOiB0aG91Z2ggaXQncyBub3QgdGV4dCwgdGhlIGJvcmRlciBpcyBhIGhpbnQgYWJvdXQgdGhlIGZhY3QgdGhhdCB0aGlzIGlzIHRvZGF5J3MgZGF0ZSxcbiAgICAvLyBzbyB3ZSB1c2UgdGhlIGhpbnQgY29sb3IuXG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCkge1xuICAgICRjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuXG4gICAgQGlmICh0eXBlLW9mKCRjb2xvcikgPT0gY29sb3IpIHtcbiAgICAgIGJvcmRlci1jb2xvcjogZmFkZS1vdXQoJGNvbG9yLCAkbWF0LWRhdGVwaWNrZXItdG9kYXktZmFkZS1hbW91bnQpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB0aGUgY29sb3IgZGlkbid0IHJlc29sdmUgdG8gYSBjb2xvciB2YWx1ZSwgYnV0IHNvbWV0aGluZyBsaWtlIGEgQ1NTIHZhcmlhYmxlLCB3ZSBjYW4ndFxuICAgICAgLy8gZmFkZSBpdCBvdXQgc28gd2UgZmFsbCBiYWNrIHRvIHJlZHVjaW5nIHRoZSBlbGVtZW50IG9wYWNpdHkuIE5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlXG4gICAgICAvLyAkbWF0LWRhdGVwaWNrZXItdG9kYXktZmFkZS1hbW91bnQsIGJlY2F1c2UgaGludCB0ZXh0IHVzdWFsbHkgaGFzIHNvbWUgb3BhY2l0eSBhcHBsaWVkXG4gICAgICAvLyB0byBpdCBhbHJlYWR5IGFuZCB3ZSBkb24ndCB3YW50IHRoZW0gdG8gc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLWNvbG9yKG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KSk7XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDQsICR0aGVtZSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWRhdGVwaWNrZXItY29sb3IobWFwLWdldCgkdGhlbWUsIGFjY2VudCkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX21hdC1kYXRlcGlja2VyLWNvbG9yKG1hcC1nZXQoJHRoZW1lLCB3YXJuKSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2gge1xuICAgIEBpbmNsdWRlIF9tYXQtdGhlbWUtZWxldmF0aW9uKDAsICR0aGVtZSk7XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSksIHRleHQpO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IobWFwLWdldCgkdGhlbWUsIGFjY2VudCksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcihtYXAtZ2V0KCR0aGVtZSwgd2FybiksIHRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWRhdGVwaWNrZXItdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHkge1xuICAgIGZvbnQtc2l6ZTogJG1hdC1jYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHRoIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiAkbWF0LWNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1kaWFsb2ctdGhlbWUoJHRoZW1lKSB7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1kaWFsb2ctY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigyNCwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1kaWFsb2ctdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSBtYXQtdHlwb2dyYXBoeS1sZXZlbC10by1zdHlsZXMoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LWV4cGFuc2lvbi1wYW5lbC10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMiwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1hY3Rpb24tcm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwge1xuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgICY6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pIHtcbiAgICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRGlzYWJsZSB0aGUgaG92ZXIgb24gdG91Y2ggZGV2aWNlcyBzaW5jZSBpdCBjYW4gYXBwZWFyIGxpa2UgaXQgaXMgc3R1Y2suIFdlIGNhbid0IHVzZVxuICAvLyBgQG1lZGlhIChob3ZlcilgIGFib3ZlLCBiZWNhdXNlIHRoZSBkZXNrdG9wIHN1cHBvcnQgYnJvd3NlciBzdXBwb3J0IGlzbid0IGdyZWF0LlxuICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddKVxuICAgICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbixcbiAgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9J3RydWUnXSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcblxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZSxcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24ge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtZXhwYW5zaW9uLXBhbmVsLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cblxuXG5cbi8vIFRoaXMgbWl4aW4gd2lsbCBlbnN1cmUgdGhhdCBsaW5lcyB0aGF0IG92ZXJmbG93IHRoZSBjb250YWluZXIgd2lsbCBoaWRlIHRoZSBvdmVyZmxvdyBhbmRcbi8vIHRydW5jYXRlIG5lYXRseSB3aXRoIGFuIGVsbGlwc2lzLlxuQG1peGluIG1hdC10cnVuY2F0ZS1saW5lKCkge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gTWl4aW4gdG8gcHJvdmlkZSBhbGwgbWF0LWxpbmUgc3R5bGVzLCBjaGFuZ2luZyBzZWNvbmRhcnkgZm9udCBzaXplIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxpc3Rcbi8vIGlzIGluIGRlbnNlIG1vZGUuXG5AbWl4aW4gbWF0LWxpbmUtYmFzZSgkc2Vjb25kYXJ5LWZvbnQtc2l6ZSkge1xuICAubWF0LWxpbmUge1xuICAgIEBpbmNsdWRlIG1hdC10cnVuY2F0ZS1saW5lKCk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIC8vIGFsbCBsaW5lcyBidXQgdGhlIHRvcCBsaW5lIHNob3VsZCBoYXZlIHNtYWxsZXIgdGV4dFxuICAgICY6bnRoLWNoaWxkKG4rMikge1xuICAgICAgZm9udC1zaXplOiAkc2Vjb25kYXJ5LWZvbnQtc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBub3JtYWxpemVzIGRlZmF1bHQgZWxlbWVudCBzdHlsZXMsIGUuZy4gZm9udCB3ZWlnaHQgZm9yIGhlYWRpbmcgdGV4dC5cbkBtaXhpbiBtYXQtbm9ybWFsaXplLXRleHQoKSB7XG4gICYgPiAqIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2Ugc3R5bGVzIGZvciB0aGUgd3JhcHBlciBhcm91bmQgbWF0LWxpbmUgZWxlbWVudHMgaW4gYSBsaXN0LlxuQG1peGluIG1hdC1saW5lLXdyYXBwZXItYmFzZSgpIHtcbiAgQGluY2x1ZGUgbWF0LW5vcm1hbGl6ZS10ZXh0KCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLy8gTXVzdCByZW1vdmUgd3JhcHBlciB3aGVuIGxpbmVzIGFyZSBlbXB0eSBvciBpdCB0YWtlcyB1cCBob3Jpem9udGFsXG4gIC8vIHNwYWNlIGFuZCBwdXNoZXMgb3RoZXIgZWxlbWVudHMgdG8gdGhlIHJpZ2h0LlxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cblxuXG4vLyBJbmNsdWRlIHRoaXMgZW1wdHkgbWl4aW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMuXG5AbWl4aW4gbWF0LWdyaWQtbGlzdC10aGVtZSgkdGhlbWUpIHsgfVxuXG5AbWl4aW4gbWF0LWdyaWQtbGlzdC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1ncmlkLXRpbGUtaGVhZGVyLFxuICAubWF0LWdyaWQtdGlsZS1mb290ZXIge1xuICAgIEBpbmNsdWRlIG1hdC1saW5lLWJhc2UobWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKSk7XG4gICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuXG5cblxuLy8gSW5jbHVkZSB0aGlzIGVtcHR5IG1peGluIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzLlxuQG1peGluIG1hdC1pY29uLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWljb24ge1xuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1pY29uLXR5cG9ncmFwaHkoJGNvbmZpZykgeyB9XG5cblxuXG5cblxuLy8gUmVuZGVycyBhIGdyYWRpZW50IGZvciBzaG93aW5nIHRoZSBkYXNoZWQgbGluZSB3aGVuIHRoZSBpbnB1dCBpcyBkaXNhYmxlZC5cbi8vIFVubGlrZSB1c2luZyBhIGJvcmRlciwgYSBncmFkaWVudCBhbGxvd3MgdXMgdG8gYWRqdXN0IHRoZSBzcGFjaW5nIG9mIHRoZSBkb3R0ZWQgbGluZVxuLy8gdG8gbWF0Y2ggdGhlIE1hdGVyaWFsIERlc2lnbiBzcGVjLlxuQG1peGluIG1hdC1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkY29sb3IgMCUsICRjb2xvciAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBGaWd1cmVzIG91dCB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGZvciBhIGZvcm0gY29udHJvbC5cbi8vIFVzZWQgcHJpbWFyaWx5IHRvIHByZXZlbnQgdGhlIHZhcmlvdXMgZm9ybSBjb250cm9scyBmcm9tXG4vLyBiZWNvbWluZyBvdXQgb2Ygc3luYyBzaW5jZSB0aGVzZSBjb2xvcnMgYXJlbid0IGluIGEgcGFsZXR0ZS5cbkBmdW5jdGlvbiBfbWF0LWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG4gIEByZXR1cm4gbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNSwgMC40MikpO1xufVxuXG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL25vLXByZWZpeGVzICovXG5AbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlKSB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1vei11c2VyLXNlbGVjdDogJHZhbHVlO1xuICAtbXMtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWIge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgY3Vyc29yOiBncmFiO1xufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWJiaW5nIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmFsdWUpIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6ICR2YWx1ZTtcbn1cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cblxuXG5cbkBtaXhpbiBtYXQtaW5wdXQtdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxcbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIHRleHQpO1xuXG4gICAgQGluY2x1ZGUgaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6IF9tYXQtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkdGhlbWUpO1xuICAgIH1cblxuICAgIC8vIE9uIGRhcmsgdGhlbWVzIHdlIHNldCB0aGUgbmF0aXZlIGBzZWxlY3RgIGNvbG9yIHRvIHNvbWUgc2hhZGUgb2Ygd2hpdGUsXG4gICAgLy8gaG93ZXZlciB0aGUgY29sb3IgcHJvcGFnYXRlcyB0byBhbGwgb2YgdGhlIGBvcHRpb25gIGVsZW1lbnRzLCB3aGljaCBhcmVcbiAgICAvLyBhbHdheXMgb24gYSB3aGl0ZSBiYWNrZ3JvdW5kIGluc2lkZSB0aGUgZHJvcGRvd24sIGNhdXNpbmcgdGhlbSB0byBibGVuZCBpbi5cbiAgICAvLyBTaW5jZSB3ZSBjYW4ndCBjaGFuZ2UgYmFja2dyb3VuZCBvZiB0aGUgZHJvcGRvd24sIHdlIG5lZWQgdG8gZXhwbGljaXRseVxuICAgIC8vIHJlc2V0IHRoZSBjb2xvciBvZiB0aGUgb3B0aW9ucyB0byBzb21ldGhpbmcgZGFyay5cbiAgICBAaWYgKG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKSkge1xuICAgICAgb3B0aW9uIHtcbiAgICAgICAgY29sb3I6ICRkYXJrLXByaW1hcnktdGV4dDtcbiAgICAgIH1cblxuICAgICAgb3B0aW9uOmRpc2FibGVkIHtcbiAgICAgICAgY29sb3I6ICRkYXJrLWRpc2FibGVkLXRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCxcbiAgLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogbWF0LWNvbG9yKCR3YXJuLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1pbnB1dC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcblxuICAvLyA8aW5wdXQ+IGVsZW1lbnRzIHNlZW0gdG8gaGF2ZSB0aGVpciBoZWlnaHQgc2V0IHNsaWdodGx5IHRvbyBsYXJnZSBvbiBTYWZhcmkgY2F1c2luZyB0aGUgdGV4dCB0b1xuICAvLyBiZSBtaXNhbGlnbmVkIHcuci50LiB0aGUgcGxhY2Vob2xkZXIuIEFkZGluZyB0aGlzIG1hcmdpbiBjb3JyZWN0cyBpdC5cbiAgaW5wdXQubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIG1hcmdpbi10b3A6IC0kbGluZS1zcGFjaW5nICogMWVtO1xuICB9XG59XG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtbGlzdC10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWxpc3QtYmFzZSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1saXN0LWl0ZW0tZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZGlzYWJsZWQtbGlzdC1vcHRpb24pO1xuICB9XG5cbiAgLm1hdC1saXN0LW9wdGlvbixcbiAgLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbSxcbiAgLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbSB7XG4gICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdob3ZlcicpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LWxpc3QtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gICRmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuXG4gIC5tYXQtbGlzdC1pdGVtIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG5cbiAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgbGlzdFxuICAubWF0LWxpc3QtYmFzZSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgICBAaW5jbHVkZSBtYXQtbGluZS1iYXNlKG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIG1hdC1saW5lLWJhc2UobWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpKTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMik7XG4gICAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgICB9XG4gIH1cblxuICAvLyBEZW5zZSBsaXN0XG4gIC5tYXQtbGlzdC1iYXNlW2RlbnNlXSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgQGluY2x1ZGUgbWF0LWxpbmUtYmFzZShtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIEBpbmNsdWRlIG1hdC1saW5lLWJhc2UobWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1tZW51LXRoZW1lKCR0aGVtZSkge1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbWVudS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNCwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ3RleHQnKTtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICYsICY6OmFmdGVyIHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2Rpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uLW5vLWNvbG9yLFxuICAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXI6OmFmdGVyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCAnaWNvbicpO1xuICB9XG5cbiAgLm1hdC1tZW51LWl0ZW06aG92ZXIsXG4gIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZCB7XG4gICAgJjpub3QoW2Rpc2FibGVkXSkge1xuICAgICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1tZW51LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHdlaWdodDogbWF0LWZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LXBhZ2luYXRvci10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXBhZ2luYXRvciB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCBtYXQtY29sb3IoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIHtcbiAgICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAgIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXBhZ2luYXRvci10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuQG1peGluIG1hdC1wcm9ncmVzcy1iYXItdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQge1xuICAgIGZpbGw6IG1hdC1jb2xvcigkcHJpbWFyeSwgbGlnaHRlcik7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgbGlnaHRlcik7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgfVxuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQge1xuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQge1xuICAgICAgZmlsbDogbWF0LWNvbG9yKCRhY2NlbnQsIGxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IG1hdC1jb2xvcigkd2FybiwgbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkd2FybiwgbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1wcm9ncmVzcy1iYXItdHlwb2dyYXBoeSgkY29uZmlnKSB7IH1cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgLm1hdC1wcm9ncmVzcy1zcGlubmVyLCAubWF0LXNwaW5uZXIge1xuICAgIGNpcmNsZSB7XG4gICAgICBzdHJva2U6IG1hdC1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IGNpcmNsZSB7XG4gICAgICBzdHJva2U6IG1hdC1jb2xvcigkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIGNpcmNsZSB7XG4gICAgICBzdHJva2U6IG1hdC1jb2xvcigkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG5cblxuXG5cbkBtaXhpbiBfbWF0LXJhZGlvLWNvbG9yKCRwYWxldHRlKSB7XG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlKTtcbiAgfVxuXG4gIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLFxuICAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxcbiAgJi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLFxuICAmOmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtcmFkaW8tdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX21hdC1yYWRpby1jb2xvcigkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtcmFkaW8tY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXJhZGlvLWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIG5lZWRzIGV4dHJhIHNwZWNpZmljaXR5LCBiZWNhdXNlIHRoZSBjbGFzc2VzIGFib3ZlIGFyZSBjb21iaW5lZFxuICAgIC8vIChlLmcuIGAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50YCkgd2hpY2ggaW5jcmVhc2VzIHRoZWlyIHNwZWNpZmljaXR5IGEgbG90LlxuICAgIC8vIFRPRE86IGNvbnNpZGVyIG1ha2luZyB0aGUgc2VsZWN0b3JzIGludG8gZGVzY2VuZGFudHMgKGAubWF0LXByaW1hcnkgLm1hdC1yYWRpby1idXR0b25gKS5cbiAgICAmLm1hdC1yYWRpby1kaXNhYmxlZCB7XG4gICAgICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLFxuICAgICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgICAgICBib3JkZXItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50LFxuICAgICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkKTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50IHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN3aXRjaCB0aGlzIHRvIGEgc29saWQgY29sb3Igc2luY2Ugd2UncmUgdXNpbmcgYG9wYWNpdHlgXG4gICAgLy8gdG8gY29udHJvbCBob3cgb3BhcXVlIHRoZSByaXBwbGUgc2hvdWxkIGJlLlxuICAgIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwX2dldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtcmFkaW8tdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtcmFkaW8tYnV0dG9uIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cblxuXG5cblxuXG5cblxuQG1peGluIG1hdC1zZWxlY3QtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuXG4gIC5tYXQtc2VsZWN0LXZhbHVlIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogX21hdC1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yKCR0aGVtZSk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtcGFuZWwge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNCwgJHRoZW1lKTtcblxuICAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgaG92ZXIsIDAuMTIpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZCB7XG4gICAgJi5tYXQtZm9jdXNlZCB7XG4gICAgICAmLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgdGV4dCk7XG4gICAgICB9XG5cbiAgICAgICYubWF0LWFjY2VudCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgdGV4dCk7XG4gICAgICB9XG5cbiAgICAgICYubWF0LXdhcm4gLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogbWF0LWNvbG9yKCR3YXJuLCB0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIG1hdC1zZWxlY3QtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAubWF0LXNlbGVjdCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICB9XG59XG5cblxuXG5cblxuXG5AbWl4aW4gbWF0LXNpZGVuYXYtdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yOiAgbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1zaWRlLWJvcmRlcjogc29saWQgMXB4IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWRyYXdlci1wdXNoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtZHJhd2VyLXNpZGUpIHtcbiAgICAgIC8vIFRoZSBlbGV2YXRpb24gb2Ygei0xNiBpcyBub3RlZCBpbiB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kcmF3ZXIuaHRtbFxuICAgICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMTYsICR0aGVtZSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICAgICRvcGFjaXR5OiAwLjY7XG4gICAgJGJhY2tkcm9wLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGNhcmQsICRvcGFjaXR5KTtcblxuICAgIEBpZiAodHlwZS1vZigkYmFja2Ryb3AtY29sb3IpID09IGNvbG9yKSB7XG4gICAgICAvLyBXZSB1c2UgaW52ZXJ0KCkgaGVyZSB0byBoYXZlIHRoZSBkYXJrZW4gdGhlIGJhY2tncm91bmQgY29sb3IgZXhwZWN0ZWQgdG8gYmUgdXNlZC4gSWYgdGhlXG4gICAgICAvLyBiYWNrZ3JvdW5kIGlzIGxpZ2h0LCB3ZSB1c2UgYSBkYXJrIGJhY2tkcm9wLiBJZiB0aGUgYmFja2dyb3VuZCBpcyBkYXJrLFxuICAgICAgLy8gd2UgdXNlIGEgbGlnaHQgYmFja2Ryb3AuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbnZlcnQoJGJhY2tkcm9wLWNvbG9yKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gSWYgd2UgY291bGRuJ3QgcmVzb2x2ZSB0aGUgYmFja2Ryb3AgY29sb3IgdG8gYSBjb2xvciB2YWx1ZSwgZmFsbCBiYWNrIHRvIHVzaW5nXG4gICAgICAvLyBgb3BhY2l0eWAgdG8gbWFrZSBpdCBvcGFxdWUgc2luY2UgaXRzIGVuZCB2YWx1ZSBjb3VsZCBiZSBhIHNvbGlkIGNvbG9yLlxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tkcm9wLWNvbG9yO1xuICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtc2lkZW5hdi10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG5cblxuXG5cblxuQG1peGluIF9tYXQtc2xpZGUtdG9nZ2xlLWNoZWNrZWQoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSkge1xuICAmLm1hdC1jaGVja2VkIHtcbiAgICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuXG4gICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgICAgIC8vIE9wYWNpdHkgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzcGVjcyBmb3IgdGhlIHNlbGVjdGlvbiBjb250cm9scy5cbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9zZWxlY3Rpb24tY29udHJvbHMuaHRtbCNzcGVjc1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUsIDAuNTQpO1xuICAgIH1cblxuICAgIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgLy8gU2V0IG5vIG9wYWNpdHkgZm9yIHRoZSByaXBwbGVzIGJlY2F1c2UgdGhlIHJpcHBsZSBvcGFjaXR5IHdpbGwgYmUgYWRqdXN0ZWQgZHluYW1pY2FsbHlcbiAgICAgIC8vIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIHNsaWRlLXRvZ2dsZSAoZS5nLiBmb3IgaG92ZXIsIGZvY3VzKVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNsaWRlLXRvZ2dsZS10aGVtZSgkdGhlbWUpIHtcbiAgJGlzLWRhcms6IG1hcF9nZXQoJHRoZW1lLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgLy8gQ29sb3IgaHVlcyBhcmUgYmFzZWQgb24gdGhlIHNwZWNzIHdoaWNoIGJyaWVmbHkgc2hvdyB0aGUgaHVlcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGEgc3dpdGNoLlxuICAvLyBUaGUgMjAxOCBzcGVjcyBubyBsb25nZXIgZGVzY3JpYmUgaG93IGRhcmsgc3dpdGNoZXMgc2hvdWxkIGxvb2sgbGlrZS4gRHVlIHRvIHRoZSBsYWNrIG9mXG4gIC8vIGluZm9ybWF0aW9uIGZvciBkYXJrIHRoZW1lZCBzd2l0Y2hlcywgd2UgcGFydGlhbGx5IGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uXG4gIC8vIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4gRm9yIHRoZSBjaGVja2VkIGNvbG9yIHdlIGFsd2F5cyB1c2UgdGhlIGBkZWZhdWx0YCBodWUgYmVjYXVzZVxuICAvLyB0aGF0IGZvbGxvd3MgTURDIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGNyZWF0ZSBhIGN1c3RvbSB0aGVtZSB3aXRob3V0IG5lZWRpbmdcbiAgLy8gdG8gc3BlY2lmeSBlYWNoIGh1ZSBpbmRpdmlkdWFsbHkuXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogZGVmYXVsdDtcblxuICAkYmFyLXVuY2hlY2tlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCRhY2NlbnQsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG5cbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIF9tYXQtc2xpZGUtdG9nZ2xlLWNoZWNrZWQoJHByaW1hcnksICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXNsaWRlLXRvZ2dsZS1jaGVja2VkKCR3YXJuLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oMSwgJHRoZW1lKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJG1hdC1ncmV5LCAkdGh1bWItdW5jaGVja2VkLWh1ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXItdW5jaGVja2VkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc2xpZGUtdG9nZ2xlLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cblxuXG5cblxuQG1peGluIF9tYXQtc2xpZGVyLWlubmVyLWNvbnRlbnQtdGhlbWUoJHBhbGV0dGUpIHtcbiAgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxcbiAgLm1hdC1zbGlkZXItdGh1bWIsXG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJHBhbGV0dGUpO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCB7XG4gICAgY29sb3I6IG1hdC1jb2xvcigkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zbGlkZXItdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICRtYXQtc2xpZGVyLW9mZi1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmKTtcbiAgJG1hdC1zbGlkZXItb2ZmLWZvY3VzZWQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2xpZGVyLW9mZi1hY3RpdmUpO1xuICAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmKTtcbiAgJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2xpZGVyLW1pbik7XG4gICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1mb2N1cy1yaW5nLWNvbG9yOiBtYXQtY29sb3IoJGFjY2VudCwgZGVmYXVsdCwgMC4yKTtcbiAgJG1hdC1zbGlkZXItZm9jdXMtcmluZy1taW4tdmFsdWUtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgYmFzZSwgMC4xMik7XG4gICRtYXQtc2xpZGVyLXRpY2stY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgYmFzZSwgMC43KTtcbiAgJG1hdC1zbGlkZXItdGljay1zaXplOiAycHg7XG5cbiAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItb2ZmLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1wcmltYXJ5IHtcbiAgICBAaW5jbHVkZSBfbWF0LXNsaWRlci1pbm5lci1jb250ZW50LXRoZW1lKCRwcmltYXJ5KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IHtcbiAgICBAaW5jbHVkZSBfbWF0LXNsaWRlci1pbm5lci1jb250ZW50LXRoZW1lKCRhY2NlbnQpO1xuICB9XG5cbiAgLm1hdC13YXJuIHtcbiAgICBAaW5jbHVkZSBfbWF0LXNsaWRlci1pbm5lci1jb250ZW50LXRoZW1lKCR3YXJuKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWZvY3VzLXJpbmctY29sb3I7XG4gIH1cblxuICAubWF0LXNsaWRlcjpob3ZlcixcbiAgLmNkay1mb2N1c2VkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWRpc2FibGVkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItbWluLXZhbHVlIHtcbiAgICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWZvY3VzLXJpbmctbWluLXZhbHVlLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iLFxuICAgICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLFxuICAgICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItbGFiZWwtY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSB7XG4gICAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG1hdC1zbGlkZXItb2ZmLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlcixcbiAgICAgICYuY2RrLWZvY3VzZWQge1xuICAgICAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci10aWNrLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcbiAgICAvLyBGaXJlZm94IGRvZXNuJ3QgZHJhdyB0aGUgZ3JhZGllbnQgY29ycmVjdGx5IHdpdGggJ3RvIHJpZ2h0J1xuICAgIC8vIChzZWUgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNDMxOSkuXG4gICAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXNsaWRlci10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AbWl4aW4gbWF0LXN0ZXBwZXItdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgLm1hdC1zdGVwLWhlYWRlciB7XG4gICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG5cbiAgICAvLyBPbiB0b3VjaCBkZXZpY2VzIHRoZSA6aG92ZXIgc3RhdGUgd2lsbCBsaW5nZXIgb24gdGhlIGVsZW1lbnQgYWZ0ZXIgYSB0YXAuXG4gICAgLy8gUmVzZXQgaXQgdmlhIGBAbWVkaWFgIGFmdGVyIHRoZSBkZWNsYXJhdGlvbiwgYmVjYXVzZSB0aGUgbWVkaWEgcXVlcnkgaXNuJ3RcbiAgICAvLyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXJzIHlldC5cbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtbGFiZWwsXG4gICAgLm1hdC1zdGVwLW9wdGlvbmFsIHtcbiAgICAgIC8vIFRPRE8oam9zZXBocGVycm90dCk6IFVwZGF0ZSB0byB1c2luZyBhIGNvcnJlY3RlZCBkaXNhYmxlZC10ZXh0IGNvbnRyYXN0XG4gICAgICAvLyBpbnN0ZWFkIG9mIHNlY29uZGFyeS10ZXh0LlxuICAgICAgY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgIC8vIFRPRE8oam9zZXBocGVycm90dCk6IFVwZGF0ZSB0byB1c2luZyBhIGNvcnJlY3RlZCBkaXNhYmxlZC10ZXh0IGNvbnRyYXN0XG4gICAgICAvLyBpbnN0ZWFkIG9mIHNlY29uZGFyeS10ZXh0LlxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxcbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3Ige1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkd2FybiwgdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwsIC5tYXQtc3RlcHBlci12ZXJ0aWNhbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgfVxuXG4gIC5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lOjpiZWZvcmUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmUsXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YWZ0ZXIsXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cbn1cblxuQG1peGluIG1hdC1zdGVwcGVyLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXN0ZXBwZXItdmVydGljYWwsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH07XG4gIH1cblxuICAubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICBmb250LXNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTIpO1xuICAgICAgd2VpZ2h0OiBtYXQtZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgICB9O1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc29ydC10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXNvcnQtaGVhZGVyLWFycm93IHtcbiAgICAkdGFibGUtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICAgICR0ZXh0LWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcblxuICAgIC8vIEJlY2F1c2UgdGhlIGFycm93IGlzIG1hZGUgdXAgb2YgbXVsdGlwbGUgZWxlbWVudHMgdGhhdCBhcmUgc3RhY2tlZCBvbiB0b3Agb2YgZWFjaCBvdGhlcixcbiAgICAvLyB3ZSBjYW4ndCB1c2UgdGhlIHNlbWktdHJhc3BhcmVudCBjb2xvciBmcm9tIHRoZSB0aGVtZSBkaXJlY3RseS4gSWYgdGhlIHZhbHVlIGlzIGEgY29sb3JcbiAgICAvLyAqdHlwZSosIHdlIGNvbnZlcnQgaXQgaW50byBhIHNvbGlkIGNvbG9yIGJ5IHRha2luZyB0aGUgb3BhY2l0eSBmcm9tIHRoZSByZ2JhIHZhbHVlIGFuZFxuICAgIC8vIHVzaW5nIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGJhY2tncm91bmQgdG8gcHV0IGludG8gZm9yZWdyb3VuZFxuICAgIC8vIHdoZW4gbWl4aW5nIHRoZSBjb2xvcnMgdG9nZXRoZXIuIE90aGVyd2lzZSwgaWYgaXQgcmVzb2x2ZXMgdG8gc29tZXRoaW5nIGRpZmZlcmVudFxuICAgIC8vIChlLmcuIGl0IHJlc29sdmVzIHRvIGEgQ1NTIHZhcmlhYmxlKSwgd2UgdXNlIHRoZSBjb2xvciBkaXJlY3RseS5cbiAgICBAaWYgKHR5cGUtb2YoJHRhYmxlLWJhY2tncm91bmQpID09IGNvbG9yIGFuZCB0eXBlLW9mKCR0ZXh0LWNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgJHRleHQtb3BhY2l0eTogb3BhY2l0eSgkdGV4dC1jb2xvcik7XG4gICAgICBjb2xvcjogbWl4KCR0YWJsZS1iYWNrZ3JvdW5kLCByZ2JhKCR0ZXh0LWNvbG9yLCAxKSwgKDEgLSAkdGV4dC1vcGFjaXR5KSAqIDEwMCUpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtc29ydC10eXBvZ3JhcGh5KCRjb25maWcpIHsgfVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtdGFicy10aGVtZSgkdGhlbWUpIHtcbiAgJHByaW1hcnk6IG1hcC1nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLWdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAtZ2V0KCR0aGVtZSwgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRoZWFkZXItYm9yZGVyOiAxcHggc29saWQgbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LXRhYi1uYXYtYmFyLFxuICAubWF0LXRhYi1oZWFkZXIge1xuICAgIGJvcmRlci1ib3R0b206ICRoZWFkZXItYm9yZGVyO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIHtcbiAgICAubWF0LXRhYi1uYXYtYmFyLFxuICAgIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgICBib3JkZXItdG9wOiAkaGVhZGVyLWJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtdGFiLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBoZWFkZXIgYm9yZGVyIHdoZW4gdGhlcmUgaXMgYSBiYWNrZ3JvdW5kIGNvbG9yXG4gIC5tYXQtdGFiLWdyb3VwW2NsYXNzKj0nbWF0LWJhY2tncm91bmQtJ10gLm1hdC10YWItaGVhZGVyLFxuICAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj0nbWF0LWJhY2tncm91bmQtJ10ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgfVxuXG4gIC5tYXQtdGFiLWdyb3VwLCAubWF0LXRhYi1uYXYtYmFyIHtcbiAgICAkdGhlbWUtY29sb3JzOiAoXG4gICAgICBwcmltYXJ5OiAkcHJpbWFyeSxcbiAgICAgIGFjY2VudDogJGFjY2VudCxcbiAgICAgIHdhcm46ICR3YXJuXG4gICAgKTtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3Igb2YgdGhlIHRhYnNcbiAgICAgICYubWF0LSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWItbGFiZWwtZm9jdXMoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1pbmstYmFyKCRjb2xvcik7XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgaW5rIGJhciB3aGVuIGJhY2tncm91bmQgY29sb3IgaXMgdGhlIHNhbWVcbiAgICAgICAgJi5tYXQtYmFja2dyb3VuZC0jeyRuYW1lfSB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1pbmstYmFyKCRjb2xvciwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICR0aGVtZS1jb2xvcnMge1xuICAgICAgLy8gU2V0IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRhYnMgYW5kIG92ZXJyaWRlIGZvY3VzIGNvbG9yXG4gICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWItbGFiZWwtZm9jdXMoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX21hdC10YWJzLWJhY2tncm91bmQoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9tYXQtaW5rLWJhcigkY29sb3IsICRodWU6IGRlZmF1bHQpIHtcbiAgLm1hdC1pbmstYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGNvbG9yLCAkaHVlKTtcbiAgfVxufVxuXG5AbWl4aW4gX21hdC10YWItbGFiZWwtZm9jdXMoJHRhYi1mb2N1cy1jb2xvcikge1xuICAubWF0LXRhYi1sYWJlbCxcbiAgLm1hdC10YWItbGluayB7XG4gICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmLmNkay1wcm9ncmFtLWZvY3VzZWQge1xuICAgICAgJjpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCR0YWItZm9jdXMtY29sb3IsIGxpZ2h0ZXIsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfbWF0LXRhYnMtYmFja2dyb3VuZCgkYmFja2dyb3VuZC1jb2xvcikge1xuICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHRhYiBncm91cFxuICAubWF0LXRhYi1oZWFkZXIsIC5tYXQtdGFiLWxpbmtzLCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yKTtcbiAgfVxuXG4gIC8vIFNldCBsYWJlbHMgdG8gY29udHJhc3QgYWdhaW5zdCBiYWNrZ3JvdW5kXG4gIC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1saW5rIHtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcblxuICAgICYubWF0LXRhYi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBwYWdpbmF0aW9uIGNoZXZyb25zIHRvIGNvbnRyYXN0IGJhY2tncm91bmRcbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gIH1cblxuICAvLyBTZXQgcmlwcGxlcyBjb2xvciB0byBiZSB0aGUgY29udHJhc3QgY29sb3Igb2YgdGhlIG5ldyBiYWNrZ3JvdW5kLiBPdGhlcndpc2UgdGhlIHJpcHBsZVxuICAvLyBjb2xvciB3aWxsIGJlIGJhc2VkIG9uIHRoZSBhcHAgYmFja2dyb3VuZCBjb2xvci5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjEyKTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRhYnMtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtdGFiLWdyb3VwIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcsIGJ1dHRvbik7XG4gICAgICBzaXplOiBtYXQtZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuQG1peGluIF9tYXQtdG9vbGJhci1jb2xvcigkcGFsZXR0ZSkge1xuICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJHBhbGV0dGUpO1xuICBjb2xvcjogbWF0LWNvbG9yKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbn1cblxuQG1peGluIF9tYXQtdG9vbGJhci1mb3JtLWZpZWxkLW92ZXJyaWRlcyB7XG4gIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUsXG4gIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUsXG4gIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gIC5tYXQtc2VsZWN0LXZhbHVlLFxuICAubWF0LXNlbGVjdC1hcnJvdyxcbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRvb2xiYXItdGhlbWUoJHRoZW1lKSB7XG4gICRwcmltYXJ5OiBtYXAtZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC1nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLWdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLWdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRiYWNrZ3JvdW5kLCBhcHAtYmFyKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWNvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWNvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX21hdC10b29sYmFyLWNvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfbWF0LXRvb2xiYXItZm9ybS1maWVsZC1vdmVycmlkZXM7XG4gIH1cbn1cblxuQG1peGluIG1hdC10b29sYmFyLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXRvb2xiYXIsXG4gIC5tYXQtdG9vbGJhciBoMSxcbiAgLm1hdC10b29sYmFyIGgyLFxuICAubWF0LXRvb2xiYXIgaDMsXG4gIC5tYXQtdG9vbGJhciBoNCxcbiAgLm1hdC10b29sYmFyIGg1LFxuICAubWF0LXRvb2xiYXIgaDYge1xuICAgIEBpbmNsdWRlIG1hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcygkY29uZmlnLCB0aXRsZSk7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cblxuXG5cblxuJG1hdC10b29sdGlwLXRhcmdldC1oZWlnaHQ6IDIycHg7XG4kbWF0LXRvb2x0aXAtZm9udC1zaXplOiAxMHB4O1xuJG1hdC10b29sdGlwLXZlcnRpY2FsLXBhZGRpbmc6ICgkbWF0LXRvb2x0aXAtdGFyZ2V0LWhlaWdodCAtICRtYXQtdG9vbHRpcC1mb250LXNpemUpIC8gMjtcblxuJG1hdC10b29sdGlwLWhhbmRzZXQtdGFyZ2V0LWhlaWdodDogMzBweDtcbiRtYXQtdG9vbHRpcC1oYW5kc2V0LWZvbnQtc2l6ZTogMTRweDtcbiRtYXQtdG9vbHRpcC1oYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc6XG4gICAgKCRtYXQtdG9vbHRpcC1oYW5kc2V0LXRhcmdldC1oZWlnaHQgLSAkbWF0LXRvb2x0aXAtaGFuZHNldC1mb250LXNpemUpIC8gMjtcblxuQG1peGluIG1hdC10b29sdGlwLXRoZW1lKCR0aGVtZSkge1xuICAubWF0LXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkbWF0LWdyZXksIDcwMCwgMC45KTtcbiAgfVxufVxuXG5AbWl4aW4gbWF0LXRvb2x0aXAtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC1mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICBmb250LXNpemU6ICRtYXQtdG9vbHRpcC1mb250LXNpemU7XG4gICAgcGFkZGluZy10b3A6ICRtYXQtdG9vbHRpcC12ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkbWF0LXRvb2x0aXAtdmVydGljYWwtcGFkZGluZztcbiAgfVxuXG4gIC5tYXQtdG9vbHRpcC1oYW5kc2V0IHtcbiAgICBmb250LXNpemU6ICRtYXQtdG9vbHRpcC1oYW5kc2V0LWZvbnQtc2l6ZTtcbiAgICBwYWRkaW5nLXRvcDogJG1hdC10b29sdGlwLWhhbmRzZXQtdmVydGljYWwtcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJG1hdC10b29sdGlwLWhhbmRzZXQtdmVydGljYWwtcGFkZGluZztcbiAgfVxufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtc25hY2stYmFyLXRoZW1lKCR0aGVtZSkge1xuICAkaXMtZGFyay10aGVtZTogbWFwLWdldCgkdGhlbWUsIGlzLWRhcmspO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcblxuICAubWF0LXNuYWNrLWJhci1jb250YWluZXIge1xuICAgIC8vIFVzZSB0aGUgcHJpbWFyeSB0ZXh0IG9uIHRoZSBkYXJrIHRoZW1lLCBldmVuIHRob3VnaCB0aGUgbGlnaHRlciBvbmUgdXNlc1xuICAgIC8vIGEgc2Vjb25kYXJ5LCBiZWNhdXNlIHRoZSBjb250cmFzdCBvbiB0aGUgbGlnaHQgcHJpbWFyeSB0ZXh0IGlzIHBvb3IuXG4gICAgY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkZGFyay1wcmltYXJ5LXRleHQsICRsaWdodC1zZWNvbmRhcnktdGV4dCk7XG4gICAgYmFja2dyb3VuZDogaWYoJGlzLWRhcmstdGhlbWUsIG1hcC1nZXQoJG1hdC1ncmV5LCA1MCksICMzMjMyMzIpO1xuXG4gICAgQGluY2x1ZGUgX21hdC10aGVtZS1lbGV2YXRpb24oNiwgJHRoZW1lKTtcbiAgfVxuXG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiB7XG4gICAgY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCBpbmhlcml0LCBtYXQtY29sb3IoJGFjY2VudCwgdGV4dCkpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtc25hY2stYmFyLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAubWF0LXNpbXBsZS1zbmFja2JhciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBtYXQtZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IG1hdC1mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogaW5oZXJpdDtcbiAgICAgIHNpemU6IGluaGVyaXQ7XG4gICAgICB3ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGZpbGwgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWZpbGwtdGhlbWUoJHRoZW1lKSB7XG4gICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAtZ2V0KCR0aGVtZSwgaXMtZGFyayk7XG5cbiAgJGZpbGwtYmFja2dyb3VuZDogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBiYXNlLCBpZigkaXMtZGFyay10aGVtZSwgMC4xLCAwLjA0KSk7XG4gICRmaWxsLWRpc2FibGVkLWJhY2tncm91bmQ6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMDUsIDAuMDIpKTtcbiAgJHVuZGVybGluZS1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXgge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZpbGwtZGlzYWJsZWQtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkbGFiZWwtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9tYXQtZm9ybS1maWVsZC1maWxsLWxhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLWZpbGwtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZTtcblxuICAkbWF0LWZvcm0tZmllbGQtZmlsbC1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1maWxsLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWZpbGwtdHlwb2dyYXBoeSgkY29uZmlnKSB7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogbWF0LWxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdG9wIG9mIHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmctdG9wOiAwLjI1ZW07XG4gIC8vIFRoZSBwYWRkaW5nIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmctYm90dG9tOiAwLjc1ZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBhbW91bnQgd2Ugb2Zmc2V0IHRoZSBsYWJlbCBmcm9tIHRoZSBpbnB1dCB0ZXh0IGluIHRoZSBmaWxsIGFwcGVhcmFuY2UuXG4gICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0OiAtMC41ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nLXRvcCAwICRpbmZpeC1wYWRkaW5nLWJvdHRvbSAwO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmctdG9wO1xuICAgICAgbWFyZ2luLXRvcDogJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtZmlsbC1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1maWxsLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmctdG9wICsgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBsZWdhY3kgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAkdW5kZXJsaW5lLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICAgIH1cblxuICAgIC5tYXQtaGludCB7XG4gICAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgQGluY2x1ZGUgbWF0LWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIC8vIFdlIHVzZSBwZXJzcGVjdGl2ZSB0byBmaXggdGhlIHRleHQgYmx1cnJpbmVzcyBhcyBkZXNjcmliZWQgaGVyZTpcbiAgLy8gaHR0cDovL3d3dy51c2VyYWdlbnRtYW4uY29tL2Jsb2cvMjAxNC8wNS8wNC9maXhpbmctdHlwb2dyYXBoeS1pbnNpZGUtb2YtMi1kLWNzcy10cmFuc2Zvcm1zL1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nKSBzY2FsZSgkZm9udC1zY2FsZSkgcGVyc3BlY3RpdmUoMTAwcHgpXG4gIHRyYW5zbGF0ZVooMC4wMDFweCArICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlKTtcbiAgLy8gVGhlIHRyaWNrcyBhYm92ZSB1c2VkIHRvIHNtb290aCBvdXQgdGhlIGFuaW1hdGlvbiBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggYWN0dWFsbHkgbWFrZSB0aGluZ3NcbiAgLy8gd29yc2Ugb24gSUUsIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBpbiB0aGUgSUUgdmVyc2lvbi5cbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlKVxuICAgICAgICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuXG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZTtcblxuICAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZTogJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbi8vIFNhbWUgYXMgbWl4aW4gYWJvdmUsIGJ1dCBvbWl0cyB0aGUgdHJhbnNsYXRlWiBmb3IgcHJpbnRpbmcgcHVycG9zZXMuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludCgkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkbWF0LWZvcm0tZmllbGQtbGVnYWN5LWRlZHVwZSlcbiAgICAgICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgLy8gVGhlIHRyaWNrcyBhYm92ZSB1c2VkIHRvIHNtb290aCBvdXQgdGhlIGFuaW1hdGlvbiBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggYWN0dWFsbHkgbWFrZSB0aGluZ3NcbiAgLy8gd29yc2Ugb24gSUUsIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBpbiB0aGUgSUUgdmVyc2lvbi5cbiAgJG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1sZWdhY3ktZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gbWF0LWZvcm0tZmllbGQtbGVnYWN5LXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHNlZW0gdG8gbWVhc3VyZSBmcm9tIHRoZSBlZGdlXG4gIC8vIG9mIHRoZSB0ZXh0IGl0c2VsZiwgbm90IHRoZSBlZGdlIG9mIHRoZSBsaW5lOyB0aGVyZWZvcmUgd2Ugc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbSAtICRsaW5lLXNwYWNpbmc7XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLiBXZSBhZ2FpbiBuZWVkIHRvIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nIHNpbmNlIHRoZSBtb2NrcyBtZWFzdXJlIHRvIHRoZSBlZGdlIG9mIHRoZVxuICAvLyB0ZXh0LCBub3QgdGhlICBlZGdlIG9mIHRoZSBsaW5lLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlIC0gKCRsaW5lLXNwYWNpbmcgKiAyKTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgd2lsbCByZWx5IG9uIEF1dG9maWxsTW9uaXRvciBpbnN0ZWFkLlxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1sZWdhY3ktbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJhbnNsYXRlWiBjYXVzZXMgdGhlIGxhYmVsIHRvIG5vdCBhcHBlYXIgd2hpbGUgcHJpbnRpbmcsIHNvIHdlIG92ZXJyaWRlIGl0IHRvIG5vdFxuICAvLyBhcHBseSB0cmFuc2xhdGVaIHdoaWxlIHByaW50aW5nXG4gIEBtZWRpYSBwcmludCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgd2lsbCByZWx5IG9uIEF1dG9maWxsTW9uaXRvciBpbnN0ZWFkLlxuICAgICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGVnYWN5LWxhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLWxlZ2FjeS1sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtZGlzYWJsZWQtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICRvdXRsaW5lLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjMsIDAuMTIpKTtcbiAgJG91dGxpbmUtY29sb3ItaG92ZXI6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJG91dGxpbmUtY29sb3ItcHJpbWFyeTogbWF0LWNvbG9yKCRwcmltYXJ5KTtcbiAgJG91dGxpbmUtY29sb3ItYWNjZW50OiBtYXQtY29sb3IoJGFjY2VudCk7XG4gICRvdXRsaW5lLWNvbG9yLXdhcm46IG1hdC1jb2xvcigkd2Fybik7XG4gICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjE1LCAwLjA2KSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1ob3ZlcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLXByaW1hcnk7XG4gICAgICB9XG5cbiAgICAgICYubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1hY2NlbnQ7XG4gICAgICB9XG5cbiAgICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGFzcyByZXBlYXRlZCBzbyB0aGF0IHJ1bGUgaXMgc3BlY2lmaWMgZW5vdWdoIHRvIG92ZXJyaWRlIGZvY3VzZWQgYWNjZW50IGNvbG9yIGNhc2UuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkbGFiZWwtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWxhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlKVxuICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbWF0LWZvcm0tZmllbGQtb3V0bGluZS1kZWR1cGU7XG5cbiAgJG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZGVkdXBlOiAkbWF0LWZvcm0tZmllbGQtb3V0bGluZS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZykge1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IG1hdC1saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5maXguXG4gICRpbmZpeC1wYWRkaW5nOiAxZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgcGFkZGluZyBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLXdyYXBwZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHN1YnNjcmlwdCwgc2luY2UgaXQnc1xuICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgc3Vic2NyaXB0J3MgbWFyZ2luIGFuZCBsaW5lLWhlaWdodCwgYnV0IHdlXG4gIC8vIG5lZWQgdG8gbXVsdGlwbHkgYnkgdGhlIHN1YnNjcmlwdCBmb250IHNjYWxlIGZhY3RvciBzaW5jZSB0aGUgd3JhcHBlciBoYXMgYSBsYXJnZXIgZm9udCBzaXplLlxuICAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTogKCRzdWJzY3JpcHQtbWFyZ2luLXRvcCArICRsaW5lLWhlaWdodCkgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBhbW91bnQgd2Ugb2Zmc2V0IHRoZSBsYWJlbCBmcm9tIHRoZSBpbnB1dCB0ZXh0IGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UuXG4gICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0OiAtMC4yNWVtO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUge1xuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwICRpbmZpeC1wYWRkaW5nIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZztcbiAgICAgIG1hcmdpbi10b3A6ICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0O1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX21hdC1mb3JtLWZpZWxkLW91dGxpbmUtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWxhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcgKyAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIHN0YW5kYXJkIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcblxuICAkdW5kZXJsaW5lLWNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBtYXQtY29udHJvbC1kaXNhYmxlZC11bmRlcmxpbmUoJHVuZGVybGluZS1jb2xvcik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC10eXBvZ3JhcGh5KCRjb25maWcpIHt9XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgYXBwbHkgdG8gYWxsIGFwcGVhcmFuY2VzIG9mIHRoZSBmb3JtLWZpZWxkLlxuQG1peGluIG1hdC1mb3JtLWZpZWxkLXRoZW1lKCR0aGVtZSkge1xuICAkcHJpbWFyeTogbWFwLWdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAtZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC1nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC1nZXQoJHRoZW1lLCBpcy1kYXJrKTtcblxuICAvLyBMYWJlbCBjb2xvcnMuIFJlcXVpcmVkIGlzIHVzZWQgZm9yIHRoZSBgKmAgc3RhciBzaG93biBpbiB0aGUgbGFiZWwuXG4gICRsYWJlbC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC42KSk7XG4gICRmb2N1c2VkLWxhYmVsLWNvbG9yOiBtYXQtY29sb3IoJHByaW1hcnksIHRleHQpO1xuICAkcmVxdWlyZWQtbGFiZWwtY29sb3I6IG1hdC1jb2xvcigkYWNjZW50LCB0ZXh0KTtcblxuICAvLyBVbmRlcmxpbmUgY29sb3JzLlxuICAkdW5kZXJsaW5lLWNvbG9yLWJhc2U6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJHVuZGVybGluZS1jb2xvci1hY2NlbnQ6IG1hdC1jb2xvcigkYWNjZW50LCB0ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvci13YXJuOiBtYXQtY29sb3IoJHdhcm4sIHRleHQpO1xuICAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I6IG1hdC1jb2xvcigkcHJpbWFyeSwgdGV4dCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1oaW50IHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRmb2N1c2VkLWxhYmVsLWNvbG9yO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgIGNvbG9yOiAkcmVxdWlyZWQtbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWJhc2U7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuXG4gICAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxpbmcgZm9yIHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUgZm9ybSBmaWVsZC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBzYW1lIGNhbiBiZVxuICAvLyBhY2hpZXZlZCB3aXRoIHRoZSBuZy0qIGNsYXNzZXMsIHdlIHVzZSB0aGlzIGFwcHJvYWNoIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lXG4gIC8vIGxvZ2ljIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGVycm9yIHN0YXRlIGFuZCB0byBzaG93IHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuXG4gICAgICAmLm1hdC1hY2NlbnQsXG4gICAgICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1lcnJvciB7XG4gICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWxlZ2FjeS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZm9ybS1maWVsZC1maWxsLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUoJHRoZW1lKTtcbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbWF0LWZvcm0tZmllbGQtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG1hdC1mb3JtLWZpZWxkLWRlZHVwZSlcbiAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbWF0LWZvcm0tZmllbGQtZGVkdXBlO1xuXG4gICRtYXQtZm9ybS1maWVsZC1kZWR1cGU6ICRtYXQtZm9ybS1maWVsZC1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBtYXQtZm9ybS1maWVsZC10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiBtYXQtbGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCBpY29ucy5cbiAgJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlOiAxLjU7XG5cbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZS5cbiAgJGluZml4LXBhZGRpbmc6IDAuNWVtO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBGb250IHNpemUgdG8gdXNlIGZvciB0aGUgbGFiZWwgYW5kIHN1YnNjcmlwdCB0ZXh0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zaXplOiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGUgKiAxMDAlO1xuICAvLyBUaGUgc3BhY2UgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSAubWF0LWZvcm0tZmllbGQtZmxleCBhcmVhIGFuZCB0aGUgc3Vic2NyaXB0IHdyYXBwZXIuXG4gIC8vIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgdGhpcyBtYXJnaW4gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggdGhlIHN1YnNjcmlwdFxuICAvLyB0ZXh0IGZvbnQgc2l6ZSwgc28gd2UgbmVlZCB0byBkaXZpZGUgYnkgdGhlIHNjYWxlIGZhY3RvciB0byBtYWtlIGl0IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHRleHRcbiAgLy8gc2l6ZS5cbiAgJHN1YnNjcmlwdC1tYXJnaW4tdG9wOiAwLjVlbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZCB7XG4gICAgQGluY2x1ZGUgbWF0LXR5cG9ncmFwaHktbGV2ZWwtdG8tc3R5bGVzKCRjb25maWcsIGlucHV0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcHJlZml4LFxuICAubWF0LWZvcm0tZmllbGQtc3VmZml4IHtcbiAgICAvLyBBbGxvdyBpY29ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24ge1xuICAgICAgZm9udC1zaXplOiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgaWNvbiBidXR0b25zIGluIGEgcHJlZml4IG9yIHN1ZmZpeCB0byBhZGFwdCB0byB0aGUgY29ycmVjdCBzaXplLlxuICAgIC5tYXQtaWNvbi1idXR0b24ge1xuICAgICAgaGVpZ2h0OiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGUgKiAxZW07XG4gICAgICB3aWR0aDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuXG4gICAgICAubWF0LWljb24ge1xuICAgICAgICBoZWlnaHQ6ICRsaW5lLWhlaWdodCAqIDFlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDA7XG4gICAgLy8gVGhyb3dzIG9mZiB0aGUgYmFzZWxpbmUgaWYgd2UgZG8gaXQgYXMgYSByZWFsIG1hcmdpbiwgc28gd2UgZG8gaXQgYXMgYSBib3JkZXIgaW5zdGVhZC5cbiAgICBib3JkZXItdG9wOiAkaW5maXgtbWFyZ2luLXRvcCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICB9XG5cbiAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBAaW5jbHVkZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciB7XG4gICAgdG9wOiAtJGluZml4LW1hcmdpbi10b3A7XG4gICAgcGFkZGluZy10b3A6ICRpbmZpeC1tYXJnaW4tdG9wO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQuXG4gICAgYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XG4gICAgZm9udC1zaXplOiAkc3Vic2NyaXB0LWZvbnQtc2l6ZTtcbiAgICBtYXJnaW4tdG9wOiAkc3Vic2NyaXB0LW1hcmdpbi10b3A7XG5cbiAgICAvLyBXZSB3YW50IHRoZSBzdWJzY3JpcHQgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgIHRvcDogY2FsYygxMDAlIC0gI3skd3JhcHBlci1wYWRkaW5nLWJvdHRvbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZX0pO1xuICB9XG5cbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtbGVnYWN5LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLXN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLWZpbGwtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS10eXBvZ3JhcGh5KCRjb25maWcpO1xufVxuXG5cblxuXG5cbkBtaXhpbiBtYXQtdHJlZS10aGVtZSgkdGhlbWUpIHtcbiAgJGJhY2tncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRyZWUge1xuICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiBtYXQtdHJlZS10eXBvZ3JhcGh5KCRjb25maWcpIHtcbiAgLm1hdC10cmVlIHtcbiAgICBmb250LWZhbWlseTogbWF0LWZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10cmVlLW5vZGUsXG4gIC5tYXQtbmVzdGVkLXRyZWUtbm9kZSB7XG4gICAgZm9udC13ZWlnaHQ6IG1hdC1mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIGZvbnQtc2l6ZTogbWF0LWZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cblxuXG4vLyBJbmNsdWRlcyBhbGwgb2YgdGhlIHR5cG9ncmFwaGljIHN0eWxlcy5cbkBtaXhpbiBhbmd1bGFyLW1hdGVyaWFsLXR5cG9ncmFwaHkoJGNvbmZpZzogbnVsbCkge1xuICBAaWYgJGNvbmZpZyA9PSBudWxsIHtcbiAgICAkY29uZmlnOiBtYXQtdHlwb2dyYXBoeS1jb25maWcoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIG1hdC1iYWRnZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYmFzZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYXV0b2NvbXBsZXRlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1ib3R0b20tc2hlZXQtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWJ1dHRvbi10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtYnV0dG9uLXRvZ2dsZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtY2FyZC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtY2hlY2tib3gtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWNoaXBzLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10YWJsZS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZGF0ZXBpY2tlci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtZGlhbG9nLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1leHBhbnNpb24tcGFuZWwtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWZvcm0tZmllbGQtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LWdyaWQtbGlzdC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtaWNvbi10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtaW5wdXQtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LW1lbnUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXBhZ2luYXRvci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtcHJvZ3Jlc3MtYmFyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1wcm9ncmVzcy1zcGlubmVyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1yYWRpby10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc2VsZWN0LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zaWRlbmF2LXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1zbGlkZS10b2dnbGUtdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgbWF0LXNsaWRlci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc3RlcHBlci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc29ydC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtdGFicy10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtdG9vbGJhci10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtdG9vbHRpcC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtbGlzdC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtb3B0aW9uLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1vcHRncm91cC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBtYXQtc25hY2stYmFyLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC10cmVlLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG59XG5cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBhcmUgbm90IHRoZW1lLWRlcGVuZGVudC5cbkBtaXhpbiBtYXQtY29yZSgkdHlwb2dyYXBoeS1jb25maWc6IG51bGwpIHtcbiAgQGluY2x1ZGUgYW5ndWxhci1tYXRlcmlhbC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5LWNvbmZpZyk7XG4gIEBpbmNsdWRlIG1hdC1yaXBwbGUoKTtcbiAgQGluY2x1ZGUgY2RrLWExMXkoKTtcbiAgQGluY2x1ZGUgY2RrLW92ZXJsYXkoKTtcbiAgQGluY2x1ZGUgY2RrLXRleHQtZmllbGQoKTtcbn1cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBkZXBlbmQgb24gdGhlIHRoZW1lLlxuQG1peGluIG1hdC1jb3JlLXRoZW1lKCR0aGVtZSkge1xuICBAaW5jbHVkZSBtYXQtcmlwcGxlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1vcHRpb24tdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LW9wdGdyb3VwLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1wc2V1ZG8tY2hlY2tib3gtdGhlbWUoJHRoZW1lKTtcblxuICAvLyBQcm92aWRlcyBleHRlcm5hbCBDU1MgY2xhc3NlcyBmb3IgZWFjaCBlbGV2YXRpb24gdmFsdWUuIEVhY2ggQ1NTIGNsYXNzIGlzIGZvcm1hdHRlZCBhc1xuICAvLyBgbWF0LWVsZXZhdGlvbi16JHpWYWx1ZWAgd2hlcmUgYCR6VmFsdWVgIGNvcnJlc3BvbmRzIHRvIHRoZSB6LXNwYWNlIHRvIHdoaWNoIHRoZSBlbGVtZW50IGlzXG4gIC8vIGVsZXZhdGVkLlxuICBAZm9yICR6VmFsdWUgZnJvbSAwIHRocm91Z2ggMjQge1xuICAgIC4jeyRfbWF0LWVsZXZhdGlvbi1wcmVmaXh9I3skelZhbHVlfSB7XG4gICAgICBAaW5jbHVkZSBfbWF0LXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkdGhlbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXBwZXIgZWxlbWVudCB0aGF0IHByb3ZpZGVzIHRoZSB0aGVtZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHVzZXIncyBjb250ZW50IGlzbid0XG4gIC8vIGluc2lkZSBvZiBhIGBtYXQtc2lkZW5hdi1jb250YWluZXJgLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBleGNsdWRlIHRoZSBhbXBlcnNhbmRcbiAgLy8gc2VsZWN0b3IgaW4gY2FzZSB0aGUgbWl4aW4gaXMgaW5jbHVkZWQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgLm1hdC1hcHAtYmFja2dyb3VuZCN7aWYoJiwgJywgJi5tYXQtYXBwLWJhY2tncm91bmQnLCAnJyl9IHtcbiAgICAkYmFja2dyb3VuZDogbWFwLWdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAgICRmb3JlZ3JvdW5kOiBtYXAtZ2V0KCR0aGVtZSwgZm9yZWdyb3VuZCk7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQtY29sb3IoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLy8gTWFya2VyIHRoYXQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgdXNlciBoYXMgYWRkZWQgYSB0aGVtZSB0byB0aGVpciBwYWdlLlxuICBAYXQtcm9vdCB7XG4gICAgLm1hdC10aGVtZS1sb2FkZWQtbWFya2VyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbkBtaXhpbiBtYXQtZGl2aWRlci10aGVtZSgkdGhlbWUpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC1nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpdmlkZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IG1hdC1jb2xvcigkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWRpdmlkZXItdmVydGljYWwge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogbWF0LWNvbG9yKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vLyBDcmVhdGUgYSB0aGVtZS5cbkBtaXhpbiBhbmd1bGFyLW1hdGVyaWFsLXRoZW1lKCR0aGVtZSkge1xuICBAaW5jbHVkZSBtYXQtY29yZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtYXV0b2NvbXBsZXRlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1iYWRnZS10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtYm90dG9tLXNoZWV0LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1idXR0b24tdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWJ1dHRvbi10b2dnbGUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWNhcmQtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWNoZWNrYm94LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1jaGlwcy10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtdGFibGUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWRhdGVwaWNrZXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWRpYWxvZy10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZGl2aWRlci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtZXhwYW5zaW9uLXBhbmVsLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1mb3JtLWZpZWxkLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1ncmlkLWxpc3QtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWljb24tdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LWlucHV0LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1saXN0LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1tZW51LXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1wYWdpbmF0b3ItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXByb2dyZXNzLWJhci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtcmFkaW8tdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXNlbGVjdC10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc2lkZW5hdi10aGVtZSgkdGhlbWUpO1xuICBAaW5jbHVkZSBtYXQtc2xpZGUtdG9nZ2xlLXRoZW1lKCR0aGVtZSk7XG4gIEBpbmNsdWRlIG1hdC1zbGlkZXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXN0ZXBwZXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXNvcnQtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXRhYnMtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXRvb2xiYXItdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXRvb2x0aXAtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXRyZWUtdGhlbWUoJHRoZW1lKTtcbiAgQGluY2x1ZGUgbWF0LXNuYWNrLWJhci10aGVtZSgkdGhlbWUpO1xufVxuIiwiLyogVGhlbWUgZm9yIHRoZSByaXBwbGUgZWxlbWVudHMuKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL25vLXByZWZpeGVzICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4ubWF0LWJhZGdlLWNvbnRlbnQge1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBmb250LXNpemU6IDlweDtcbn1cblxuLm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBmb250LXNpemU6IDI0cHg7XG59XG5cbi5tYXQtaDEsIC5tYXQtaGVhZGxpbmUsIC5tYXQtdHlwb2dyYXBoeSBoMSB7XG4gIGZvbnQ6IDQwMCAyNHB4LzMycHggUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIG1hcmdpbjogMCAwIDE2cHg7XG59XG5cbi5tYXQtaDIsIC5tYXQtdGl0bGUsIC5tYXQtdHlwb2dyYXBoeSBoMiB7XG4gIGZvbnQ6IDUwMCAyMHB4LzMycHggUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIG1hcmdpbjogMCAwIDE2cHg7XG59XG5cbi5tYXQtaDMsIC5tYXQtc3ViaGVhZGluZy0yLCAubWF0LXR5cG9ncmFwaHkgaDMge1xuICBmb250OiA0MDAgMTZweC8yOHB4IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBtYXJnaW46IDAgMCAxNnB4O1xufVxuXG4ubWF0LWg0LCAubWF0LXN1YmhlYWRpbmctMSwgLm1hdC10eXBvZ3JhcGh5IGg0IHtcbiAgZm9udDogNDAwIDE1cHgvMjRweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbiAgbWFyZ2luOiAwIDAgMTZweDtcbn1cblxuLm1hdC1oNSwgLm1hdC10eXBvZ3JhcGh5IGg1IHtcbiAgZm9udDogNDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIG1hcmdpbjogMCAwIDEycHg7XG59XG5cbi5tYXQtaDYsIC5tYXQtdHlwb2dyYXBoeSBoNiB7XG4gIGZvbnQ6IDQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBtYXJnaW46IDAgMCAxMnB4O1xufVxuXG4ubWF0LWJvZHktc3Ryb25nLCAubWF0LWJvZHktMiB7XG4gIGZvbnQ6IDUwMCAxNHB4LzI0cHggUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG59XG5cbi5tYXQtYm9keSwgLm1hdC1ib2R5LTEsIC5tYXQtdHlwb2dyYXBoeSB7XG4gIGZvbnQ6IDQwMCAxNHB4LzIwcHggUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG59XG4ubWF0LWJvZHkgcCwgLm1hdC1ib2R5LTEgcCwgLm1hdC10eXBvZ3JhcGh5IHAge1xuICBtYXJnaW46IDAgMCAxMnB4O1xufVxuXG4ubWF0LXNtYWxsLCAubWF0LWNhcHRpb24ge1xuICBmb250OiA0MDAgMTJweC8yMHB4IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWRpc3BsYXktNCwgLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00IHtcbiAgZm9udDogMzAwIDExMnB4LzExMnB4IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDVlbTtcbiAgbWFyZ2luOiAwIDAgNTZweDtcbn1cblxuLm1hdC1kaXNwbGF5LTMsIC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktMyB7XG4gIGZvbnQ6IDQwMCA1NnB4LzU2cHggUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICBtYXJnaW46IDAgMCA2NHB4O1xufVxuXG4ubWF0LWRpc3BsYXktMiwgLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0yIHtcbiAgZm9udDogNDAwIDQ1cHgvNDhweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAwNWVtO1xuICBtYXJnaW46IDAgMCA2NHB4O1xufVxuXG4ubWF0LWRpc3BsYXktMSwgLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xIHtcbiAgZm9udDogNDAwIDM0cHgvNDBweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbiAgbWFyZ2luOiAwIDAgNjRweDtcbn1cblxuLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgZm9udDogNDAwIDE0cHgvMjBweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbixcbi5tYXQtZmxhdC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1jYXJkIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWNhcmQtdGl0bGUge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxlIHtcbiAgZm9udC1zaXplOiAyMHB4O1xufVxuXG4ubWF0LWNhcmQtc3VidGl0bGUsXG4ubWF0LWNhcmQtY29udGVudCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLm1hdC1jaGVja2JveCB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbCB7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4ubWF0LWNoaXAge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG4ubWF0LWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4ubWF0LWNoaXAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLm1hdC10YWJsZSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1oZWFkZXItY2VsbCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4ubWF0LWNhbGVuZGFyIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWNhbGVuZGFyLWJvZHkge1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbi5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGgge1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgZm9udDogNTAwIDIwcHgvMzJweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnQge1xuICBmb250OiA0MDAgMTRweC8yMHB4IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWZvcm0tZmllbGQge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjEyNTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gIHBhZGRpbmctYm90dG9tOiAxLjM0Mzc1ZW07XG59XG5cbi5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLFxuLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24ge1xuICBmb250LXNpemU6IDE1MCU7XG4gIGxpbmUtaGVpZ2h0OiAxLjEyNTtcbn1cbi5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbixcbi5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiB7XG4gIGhlaWdodDogMS41ZW07XG4gIHdpZHRoOiAxLjVlbTtcbn1cbi5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sXG4ubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uIHtcbiAgaGVpZ2h0OiAxLjEyNWVtO1xuICBsaW5lLWhlaWdodDogMS4xMjU7XG59XG5cbi5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gIHBhZGRpbmc6IDAuNWVtIDA7XG4gIGJvcmRlci10b3A6IDAuODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTtcbiAgd2lkdGg6IDEzMy4zMzMzMzMzMzMzJTtcbn1cbi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO1xuICB3aWR0aDogMTMzLjMzMzM0MzMzMzMlO1xufVxuXG4ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciB7XG4gIHRvcDogLTAuODQzNzVlbTtcbiAgcGFkZGluZy10b3A6IDAuODQzNzVlbTtcbn1cblxuLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgdG9wOiAxLjM0Mzc1ZW07XG59XG5cbi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICBib3R0b206IDEuMzQzNzVlbTtcbn1cblxuLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIG1hcmdpbi10b3A6IDAuNjY2NjY2NjY2N2VtO1xuICB0b3A6IGNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKTtcbn1cblxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVyIHtcbiAgcGFkZGluZy1ib3R0b206IDEuMjVlbTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICBwYWRkaW5nOiAwLjQzNzVlbSAwO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTtcbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTtcbiAgd2lkdGg6IDEzMy4zMzMzMzMzMzMzJTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpO1xuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO1xuICB3aWR0aDogMTMzLjMzMzM0MzMzMzMlO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTtcbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTtcbiAgd2lkdGg6IDEzMy4zMzMzNTMzMzMzJTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICB0b3A6IDEuMjgxMjVlbTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgYm90dG9tOiAxLjI1ZW07XG59XG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogMC41NDE2NjY2NjY3ZW07XG4gIHRvcDogY2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pO1xufVxuXG5AbWVkaWEgcHJpbnQge1xuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSk7XG4gIH1cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSk7XG4gIH1cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpO1xuICB9XG59XG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gIHBhZGRpbmc6IDAuMjVlbSAwIDAuNzVlbSAwO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICB0b3A6IDEuMDkzNzVlbTtcbiAgbWFyZ2luLXRvcDogLTAuNWVtO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO1xuICB3aWR0aDogMTMzLjMzMzMzMzMzMzMlO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO1xuICB3aWR0aDogMTMzLjMzMzM0MzMzMzMlO1xufVxuXG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gIHBhZGRpbmc6IDFlbSAwIDFlbSAwO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICB0b3A6IDEuODQzNzVlbTtcbiAgbWFyZ2luLXRvcDogLTAuMjVlbTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTtcbiAgd2lkdGg6IDEzMy4zMzMzMzMzMzMzJTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTtcbiAgd2lkdGg6IDEzMy4zMzMzNDMzMzMzJTtcbn1cblxuLm1hdC1ncmlkLXRpbGUtaGVhZGVyLFxuLm1hdC1ncmlkLXRpbGUtZm9vdGVyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSxcbi5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmUge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLFxuLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuaW5wdXQubWF0LWlucHV0LWVsZW1lbnQge1xuICBtYXJnaW4tdG9wOiAtMC4wNjI1ZW07XG59XG5cbi5tYXQtbWVudS1pdGVtIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5tYXQtcGFnaW5hdG9yLFxuLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLm1hdC1yYWRpby1idXR0b24ge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG59XG5cbi5tYXQtc2VsZWN0IHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgaGVpZ2h0OiAxLjEyNWVtO1xufVxuXG4ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5tYXQtc3RlcHBlci12ZXJ0aWNhbCwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG59XG5cbi5tYXQtc3RlcC1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuLm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvciB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5tYXQtc3RlcC1sYWJlbC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4ubWF0LXRhYi1ncm91cCB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm1hdC10b29sYmFyLFxuLm1hdC10b29sYmFyIGgxLFxuLm1hdC10b29sYmFyIGgyLFxuLm1hdC10b29sYmFyIGgzLFxuLm1hdC10b29sYmFyIGg0LFxuLm1hdC10b29sYmFyIGg1LFxuLm1hdC10b29sYmFyIGg2IHtcbiAgZm9udDogNTAwIDIwcHgvMzJweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbiAgbWFyZ2luOiAwO1xufVxuXG4ubWF0LXRvb2x0aXAge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgcGFkZGluZy10b3A6IDZweDtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcbn1cblxuLm1hdC10b29sdGlwLWhhbmRzZXQge1xuICBmb250LXNpemU6IDE0cHg7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XG59XG5cbi5tYXQtbGlzdC1pdGVtIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWxpc3Qtb3B0aW9uIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bywgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xufVxuXG4ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cbi5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24ge1xuICBmb250LXNpemU6IDE2cHg7XG59XG4ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuLm1hdC1saXN0LWJhc2UgLm1hdC1zdWJoZWFkZXIge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVtIHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMikge1xuICBmb250LXNpemU6IDEycHg7XG59XG4ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBkaXNwbGF5OiBibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlciB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4ubWF0LW9wdGlvbiB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4ubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgZm9udDogNTAwIDE0cHgvMjRweCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC1zaW1wbGUtc25hY2tiYXIge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIHtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5tYXQtdHJlZSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZjtcbn1cblxuLm1hdC10cmVlLW5vZGUsXG4ubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5tYXQtcmlwcGxlIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4ubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5LCB0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xufVxuQG1lZGlhICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmNkay12aXN1YWxseS1oaWRkZW4ge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgb3V0bGluZTogMDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi5jZGstb3ZlcmxheS1jb250YWluZXIsIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5jZGstb3ZlcmxheS1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDEwMDA7XG59XG4uY2RrLW92ZXJsYXktY29udGFpbmVyOmVtcHR5IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDAwO1xufVxuXG4uY2RrLW92ZXJsYXktcGFuZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHotaW5kZXg6IDEwMDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuLmNkay1vdmVybGF5LWJhY2tkcm9wIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHotaW5kZXg6IDEwMDA7XG4gIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO1xuICBvcGFjaXR5OiAwO1xufVxuLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcge1xuICBvcGFjaXR5OiAxO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgfVxufVxuXG4uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zMik7XG59XG5cbi5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcge1xuICBvcGFjaXR5OiAwO1xufVxuXG4uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwMDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWluLXdpZHRoOiAxcHg7XG4gIG1pbi1oZWlnaHQ6IDFweDtcbn1cblxuLmNkay1nbG9iYWwtc2Nyb2xsYmxvY2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbkBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQge1xuICAvKiEqL1xufVxuQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQge1xuICAvKiEqL1xufVxuLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0O1xufVxuXG4uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICBhbmltYXRpb24tbmFtZTogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kO1xufVxuXG50ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUge1xuICByZXNpemU6IG5vbmU7XG59XG5cbnRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmcge1xuICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50O1xufVxuXG4ubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ubWF0LW9wdGlvbiB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLm1hdC1vcHRpb246aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG59XG4ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbn1cbi5tYXQtb3B0aW9uLm1hdC1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgY29sb3I6ICMzZjUxYjU7XG59XG5cbi5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgY29sb3I6ICNmZjQwODE7XG59XG5cbi5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gIGNvbG9yOiAjZjQ0MzM2O1xufVxuXG4ubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuXG4ubWF0LXBzZXVkby1jaGVja2JveCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVyIHtcbiAgY29sb3I6ICNmYWZhZmE7XG59XG5cbi5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIHtcbiAgY29sb3I6ICNiMGIwYjA7XG59XG5cbi5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLFxuLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICBiYWNrZ3JvdW5kOiAjM2Y1MWI1O1xufVxuXG4ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLFxuLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbi5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4ubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgYmFja2dyb3VuZDogI2ZmNDA4MTtcbn1cblxuLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4ubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gIGJhY2tncm91bmQ6ICNmNDQzMzY7XG59XG5cbi5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCxcbi5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQ6ICNiMGIwYjA7XG59XG5cbi5tYXQtZWxldmF0aW9uLXowIHtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16MSB7XG4gIGJveC1zaGFkb3c6IDBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZWxldmF0aW9uLXoyIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejMge1xuICBib3gtc2hhZG93OiAwcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16NCB7XG4gIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16NSB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16NiB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejcge1xuICBib3gtc2hhZG93OiAwcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZWxldmF0aW9uLXo4IHtcbiAgYm94LXNoYWRvdzogMHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16OSB7XG4gIGJveC1zaGFkb3c6IDBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejEwIHtcbiAgYm94LXNoYWRvdzogMHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejExIHtcbiAgYm94LXNoYWRvdzogMHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejEyIHtcbiAgYm94LXNoYWRvdzogMHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejEzIHtcbiAgYm94LXNoYWRvdzogMHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejE0IHtcbiAgYm94LXNoYWRvdzogMHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejE1IHtcbiAgYm94LXNoYWRvdzogMHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejE2IHtcbiAgYm94LXNoYWRvdzogMHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZWxldmF0aW9uLXoxNyB7XG4gIGJveC1zaGFkb3c6IDBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16MTgge1xuICBib3gtc2hhZG93OiAwcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejE5IHtcbiAgYm94LXNoYWRvdzogMHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZWxldmF0aW9uLXoyMCB7XG4gIGJveC1zaGFkb3c6IDBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejIxIHtcbiAgYm94LXNoYWRvdzogMHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWVsZXZhdGlvbi16MjIge1xuICBib3gtc2hhZG93OiAwcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZWxldmF0aW9uLXoyMyB7XG4gIGJveC1zaGFkb3c6IDBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1lbGV2YXRpb24tejI0IHtcbiAgYm94LXNoYWRvdzogMHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWFwcC1iYWNrZ3JvdW5kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG5cbi5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLm1hdC1hdXRvY29tcGxldGUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG4ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG5cbi5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZDogIzNmNTFiNTtcbn1cbkBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkge1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIG91dGxpbmU6IHNvbGlkIDFweDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICB9XG59XG5cbi5tYXQtYmFkZ2UtYWNjZW50IC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGJhY2tncm91bmQ6ICNmZjQwODE7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZDogI2Y0NDMzNjtcbn1cblxuLm1hdC1iYWRnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm1hdC1iYWRnZS1oaWRkZW4gLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1hdC1iYWRnZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kOiAjYjliOWI5O1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7XG4gIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ubmctYW5pbWF0ZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnQsXG4ubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGUge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuXG4ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnQge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBsaW5lLWhlaWdodDogMTZweDtcbn1cbi5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHRvcDogLThweDtcbn1cbi5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93IC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGJvdHRvbTogLThweDtcbn1cbi5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBsZWZ0OiAtMTZweDtcbn1cbltkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IC0xNnB4O1xufVxuLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgcmlnaHQ6IC0xNnB4O1xufVxuW2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAtMTZweDtcbn1cbi5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBsZWZ0OiAtOHB4O1xufVxuW2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogLThweDtcbn1cbi5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHJpZ2h0OiAtOHB4O1xufVxuW2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAtOHB4O1xufVxuXG4ubWF0LWJhZGdlLW1lZGl1bSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICB3aWR0aDogMjJweDtcbiAgaGVpZ2h0OiAyMnB4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbn1cbi5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICB0b3A6IC0xMXB4O1xufVxuLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93IC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGJvdHRvbTogLTExcHg7XG59XG4ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGxlZnQ6IC0yMnB4O1xufVxuW2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgbGVmdDogYXV0bztcbiAgcmlnaHQ6IC0yMnB4O1xufVxuLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHJpZ2h0OiAtMjJweDtcbn1cbltkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IC0yMnB4O1xufVxuLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBsZWZ0OiAtMTFweDtcbn1cbltkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiAtMTFweDtcbn1cbi5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnQge1xuICByaWdodDogLTExcHg7XG59XG5bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHJpZ2h0OiBhdXRvO1xuICBsZWZ0OiAtMTFweDtcbn1cblxuLm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbn1cbi5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIHRvcDogLTE0cHg7XG59XG4ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBib3R0b206IC0xNHB4O1xufVxuLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGxlZnQ6IC0yOHB4O1xufVxuW2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogLTI4cHg7XG59XG4ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnQge1xuICByaWdodDogLTI4cHg7XG59XG5bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IC0yOHB4O1xufVxuLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gIGxlZnQ6IC0xNHB4O1xufVxuW2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogLTE0cHg7XG59XG4ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnQge1xuICByaWdodDogLTE0cHg7XG59XG5bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgcmlnaHQ6IGF1dG87XG4gIGxlZnQ6IC0xNHB4O1xufVxuXG4ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXIge1xuICBib3gtc2hhZG93OiAwcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuXG4ubWF0LWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbiB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cbi5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5LCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5IHtcbiAgY29sb3I6ICMzZjUxYjU7XG59XG4ubWF0LWJ1dHRvbi5tYXQtYWNjZW50LCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQsIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudCB7XG4gIGNvbG9yOiAjZmY0MDgxO1xufVxuLm1hdC1idXR0b24ubWF0LXdhcm4sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ge1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cbi5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W2Rpc2FibGVkXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtYnV0dG9uLm1hdC13YXJuW2Rpc2FibGVkXSwgLm1hdC1idXR0b25bZGlzYWJsZWRdW2Rpc2FibGVkXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bZGlzYWJsZWRdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbZGlzYWJsZWRdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbZGlzYWJsZWRdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW2Rpc2FibGVkXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltkaXNhYmxlZF1bZGlzYWJsZWRdIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XG59XG4ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG59XG4ubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjQwODE7XG59XG4ubWF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwgLm1hdC1zdHJva2VkLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwgLm1hdC1pY29uLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LCAubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBvcGFjaXR5OiAwLjE7XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbn1cblxuLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gIGJhY2tncm91bmQ6IGJsYWNrO1xufVxuXG4ubWF0LXN0cm9rZWQtYnV0dG9uOm5vdChbZGlzYWJsZWRdKSB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1yYWlzZWQtYnV0dG9uLCAubWF0LWZhYiwgLm1hdC1taW5pLWZhYiB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwgLm1hdC1mYWIubWF0LXByaW1hcnksIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkge1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQsIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LCAubWF0LWZhYi5tYXQtYWNjZW50LCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQge1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sIC5tYXQtZmFiLm1hdC13YXJuLCAubWF0LW1pbmktZmFiLm1hdC13YXJuIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bZGlzYWJsZWRdLCAubWF0LWZsYXQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W2Rpc2FibGVkXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW2Rpc2FibGVkXSwgLm1hdC1yYWlzZWQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W2Rpc2FibGVkXSwgLm1hdC1mYWIubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtZmFiLm1hdC13YXJuW2Rpc2FibGVkXSwgLm1hdC1mYWJbZGlzYWJsZWRdW2Rpc2FibGVkXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bZGlzYWJsZWRdLCAubWF0LW1pbmktZmFiW2Rpc2FibGVkXVtkaXNhYmxlZF0ge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI2KTtcbn1cbi5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwgLm1hdC1mYWIubWF0LXByaW1hcnksIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xufVxuLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCwgLm1hdC1mYWIubWF0LWFjY2VudCwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwgLm1hdC1mYWIubWF0LXdhcm4sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xufVxuLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bZGlzYWJsZWRdLCAubWF0LWZsYXQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W2Rpc2FibGVkXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW2Rpc2FibGVkXSwgLm1hdC1yYWlzZWQtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W2Rpc2FibGVkXSwgLm1hdC1mYWIubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtZmFiLm1hdC13YXJuW2Rpc2FibGVkXSwgLm1hdC1mYWJbZGlzYWJsZWRdW2Rpc2FibGVkXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtkaXNhYmxlZF0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtkaXNhYmxlZF0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bZGlzYWJsZWRdLCAubWF0LW1pbmktZmFiW2Rpc2FibGVkXVtkaXNhYmxlZF0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwgLm1hdC1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsIC5tYXQtZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG4ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LCAubWF0LWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LCAubWF0LW1pbmktZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG59XG5cbi5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtcmFpc2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSB7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG4ubWF0LXJhaXNlZC1idXR0b246bm90KFtkaXNhYmxlZF0pOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSB7XG4gIGJveC1zaGFkb3c6IDBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtcmFpc2VkLWJ1dHRvbltkaXNhYmxlZF06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuLm1hdC1mYWI6bm90KFtkaXNhYmxlZF0pOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYjpub3QoW2Rpc2FibGVkXSk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pIHtcbiAgYm94LXNoYWRvdzogMHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtZmFiW2Rpc2FibGVkXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltkaXNhYmxlZF06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLFxuLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxcbi5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG4ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cbi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG59XG5cbi5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gIGJvcmRlci1sZWZ0OiBzb2xpZCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuW2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICBib3JkZXItdG9wOiBzb2xpZCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbn1cbi5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cblxuLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7XG59XG4ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xufVxuLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkO1xufVxuXG4ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICBib3JkZXI6IHNvbGlkIDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWNhcmQge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG4ubWF0LWNhcmQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuLm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtY2FyZC1zdWJ0aXRsZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LWNoZWNrYm94LWZyYW1lIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LWNoZWNrYm94LWNoZWNrbWFyayB7XG4gIGZpbGw6ICNmYWZhZmE7XG59XG5cbi5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICBzdHJva2U6ICNmYWZhZmEgIWltcG9ydGFudDtcbn1cbkBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6IGJsYWNrLW9uLXdoaXRlKSB7XG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICAgIHN0cm9rZTogIzAwMCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbn1cblxuLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG59XG4ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjQwODE7XG59XG4ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbn1cblxuLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2IwYjBiMDtcbn1cbi5tYXQtY2hlY2tib3gtZGlzYWJsZWQ6bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gIGJvcmRlci1jb2xvcjogI2IwYjBiMDtcbn1cbi5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1sYWJlbCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuQG1lZGlhICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7XG4gIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxufVxuXG5AbWVkaWEgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHtcbiAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG4ubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbn1cblxuLm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LFxuLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBiYWNrZ3JvdW5kOiAjM2Y1MWI1O1xufVxuLm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4ubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZDogI2ZmNDA4MTtcbn1cbi5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCxcbi5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZDogI2Y0NDMzNjtcbn1cblxuLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG4ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICBvcGFjaXR5OiAwLjQ7XG59XG4ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZlIHtcbiAgYm94LXNoYWRvdzogMHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAubWF0LWNoaXAtcmVtb3ZlOmhvdmVyIHtcbiAgb3BhY2l0eTogMC41NDtcbn1cbi5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCB7XG4gIG9wYWNpdHk6IDAuNDtcbn1cbi5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbn1cblxuLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtY2hpcC1yZW1vdmUge1xuICBjb2xvcjogd2hpdGU7XG4gIG9wYWNpdHk6IDAuNDtcbn1cbi5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtY2hpcC1yZW1vdmUge1xuICBjb2xvcjogd2hpdGU7XG4gIG9wYWNpdHk6IDAuNDtcbn1cbi5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxO1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3ZlIHtcbiAgY29sb3I6IHdoaXRlO1xuICBvcGFjaXR5OiAwLjQ7XG59XG4ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xufVxuXG4ubWF0LXRhYmxlIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG5cbi5tYXQtdGFibGUgdGhlYWQsIC5tYXQtdGFibGUgdGJvZHksIC5tYXQtdGFibGUgdGZvb3QsXG5tYXQtaGVhZGVyLXJvdywgbWF0LXJvdywgbWF0LWZvb3Rlci1yb3csXG5bbWF0LWhlYWRlci1yb3ddLCBbbWF0LXJvd10sIFttYXQtZm9vdGVyLXJvd10sXG4ubWF0LXRhYmxlLXN0aWNreSB7XG4gIGJhY2tncm91bmQ6IGluaGVyaXQ7XG59XG5cbm1hdC1yb3csIG1hdC1oZWFkZXItcm93LCBtYXQtZm9vdGVyLXJvdyxcbnRoLm1hdC1oZWFkZXItY2VsbCwgdGQubWF0LWNlbGwsIHRkLm1hdC1mb290ZXItY2VsbCB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtaGVhZGVyLWNlbGwge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbn1cblxuLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG5cbi5tYXQtY2FsZW5kYXItYXJyb3cge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLFxuLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixcbi5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG5cbi5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXI6OmFmdGVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuXG4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCksXG4uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCksXG4uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG59XG5cbi5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKSB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTgpO1xufVxuXG4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjMsIDgxLCAxODEsIDAuNCk7XG59XG5cbi5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB3aGl0ZTtcbn1cblxuLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxO1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NCwgMTI5LCAwLjQpO1xufVxuLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggd2hpdGU7XG59XG4ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NCwgNjcsIDU0LCAwLjQpO1xufVxuLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHdoaXRlO1xufVxuXG4ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUge1xuICBjb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnQge1xuICBjb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuIHtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG5cbi5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG4gIGJveC1zaGFkb3c6IDBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuXG4ubWF0LWRpdmlkZXIge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWRpdmlkZXItdmVydGljYWwge1xuICBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZXhwYW5zaW9uLXBhbmVsIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWFjdGlvbi1yb3cge1xuICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWV4cGFuc2lvbi1wYW5lbCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbn1cblxuQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICB9XG59XG4ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cblxuLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLFxuLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlciB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpO1xufVxuLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG59XG5cbi5tYXQtaGludCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG59XG5cbi5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICBjb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudCB7XG4gIGNvbG9yOiAjZmY0MDgxO1xufVxuLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2FybiB7XG4gIGNvbG9yOiAjZjQ0MzM2O1xufVxuXG4ubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciB7XG4gIGNvbG9yOiAjZmY0MDgxO1xufVxuXG4ubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cblxuLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xufVxuLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjQwODE7XG59XG4ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2FybiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG59XG5cbi5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gIGNvbG9yOiAjM2Y1MWI1O1xufVxuLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICBjb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gIGNvbG9yOiAjZjQ0MzM2O1xufVxuXG4ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cbi5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LFxuLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cbi5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUsXG4ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xufVxuXG4ubWF0LWVycm9yIHtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG5cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWhpbnQge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO1xuICBiYWNrZ3JvdW5kLXNpemU6IDRweCAxMDAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXgge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDIpO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICBjb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gIGNvbG9yOiAjZmY0MDgxO1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gIGNvbG9yOiAjZjQ0MzM2O1xufVxuLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cbi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG4ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNik7XG59XG5cbi5tYXQtaWNvbi5tYXQtcHJpbWFyeSB7XG4gIGNvbG9yOiAjM2Y1MWI1O1xufVxuLm1hdC1pY29uLm1hdC1hY2NlbnQge1xuICBjb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtaWNvbi5tYXQtd2FybiB7XG4gIGNvbG9yOiAjZjQ0MzM2O1xufVxuXG4ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxcbi5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgY2FyZXQtY29sb3I6ICMzZjUxYjU7XG59XG4ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XG59XG4ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQyKTtcbn1cbi5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG4ubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnQge1xuICBjYXJldC1jb2xvcjogI2ZmNDA4MTtcbn1cblxuLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCxcbi5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gIGNhcmV0LWNvbG9yOiAjZjQ0MzM2O1xufVxuXG4ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICBjb2xvcjogI2Y0NDMzNjtcbn1cblxuLm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0ge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24ge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTtcbn1cblxuLm1hdC1saXN0LW9wdGlvbjpob3ZlciwgLm1hdC1saXN0LW9wdGlvbjpmb2N1cyxcbi5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsXG4ubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3VzLFxuLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpob3Zlcixcbi5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xufVxuXG4ubWF0LW1lbnUtcGFuZWwge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cbi5tYXQtbWVudS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSB7XG4gIGJveC1zaGFkb3c6IDBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LW1lbnUtaXRlbSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdOjphZnRlciB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuXG4ubWF0LW1lbnUtaXRlbSAubWF0LWljb24tbm8tY29sb3IsXG4ubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXI6OmFmdGVyIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtbWVudS1pdGVtOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcbi5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLFxuLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLFxuLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQ6bm90KFtkaXNhYmxlZF0pIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjA0KTtcbn1cblxuLm1hdC1wYWdpbmF0b3Ige1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cblxuLm1hdC1wYWdpbmF0b3IsXG4ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlciB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4ubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQge1xuICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjU0KTtcbn1cblxuLm1hdC1wYWdpbmF0b3ItZmlyc3QsXG4ubWF0LXBhZ2luYXRvci1sYXN0IHtcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG5cbi5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxcbi5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCxcbi5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gIGZpbGw6ICNjNWNhZTk7XG59XG5cbi5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNjNWNhZTk7XG59XG5cbi5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbn1cblxuLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgZmlsbDogI2ZmODBhYjtcbn1cbi5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmODBhYjtcbn1cbi5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxO1xufVxuXG4ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgZmlsbDogI2ZmY2RkMjtcbn1cbi5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNkZDI7XG59XG4ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG59XG5cbi5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGUsIC5tYXQtc3Bpbm5lciBjaXJjbGUge1xuICBzdHJva2U6ICMzZjUxYjU7XG59XG4ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGUsIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSB7XG4gIHN0cm9rZTogI2ZmNDA4MTtcbn1cbi5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGUsIC5tYXQtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGUge1xuICBzdHJva2U6ICNmNDQzMzY7XG59XG5cbi5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gIGJvcmRlci1jb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLFxuLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICBib3JkZXItY29sb3I6ICNmZjQwODE7XG59XG4ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLFxuLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgYm9yZGVyLWNvbG9yOiAjZjQ0MzM2O1xufVxuLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsXG4ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm46YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjQ0MzM2O1xufVxuLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLFxuLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudCB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuLm1hdC1yYWRpby1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xufVxuXG4ubWF0LXNlbGVjdC12YWx1ZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuXG4ubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNDIpO1xufVxuXG4ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuXG4ubWF0LXNlbGVjdC1hcnJvdyB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xufVxuXG4ubWF0LXNlbGVjdC1wYW5lbCB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xufVxuLm1hdC1zZWxlY3QtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSkge1xuICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgY29sb3I6ICMzZjUxYjU7XG59XG4ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gIGNvbG9yOiAjZmY0MDgxO1xufVxuLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuXG4ubWF0LWRyYXdlci1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cblxuLm1hdC1kcmF3ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG4ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtZHJhd2VyOm5vdCgubWF0LWRyYXdlci1zaWRlKSB7XG4gIGJveC1zaGFkb3c6IDBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWRyYXdlci1zaWRlIHtcbiAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cbi5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmQge1xuICBib3JkZXItbGVmdDogc29saWQgMXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cblxuW2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUge1xuICBib3JkZXItbGVmdDogc29saWQgMXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIGJvcmRlci1yaWdodDogbm9uZTtcbn1cbltkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kIHtcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gIGJvcmRlci1yaWdodDogc29saWQgMXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG59XG5cbi5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NCwgMTI5LCAwLjU0KTtcbn1cbi5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY0MDgxO1xufVxuLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xufVxuLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2MywgODEsIDE4MSwgMC41NCk7XG59XG4ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbn1cbi5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQ0LCA2NywgNTQsIDAuNTQpO1xufVxuLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1jaGVja2VkKSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG59XG5cbi5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcbn1cblxuLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjM4KTtcbn1cblxuLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XG59XG5cbi5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLFxuLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLFxuLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4ubWF0LWFjY2VudCAubWF0LXNsaWRlci10cmFjay1maWxsLFxuLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIsXG4ubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjQwODE7XG59XG4ubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4ubWF0LXdhcm4gLm1hdC1zbGlkZXItdHJhY2stZmlsbCxcbi5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYixcbi5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NCwgMTI5LCAwLjIpO1xufVxuXG4ubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzgpO1xufVxuXG4ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxcbi5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI2KTtcbn1cbi5tYXQtc2xpZGVyLWRpc2FibGVkOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpO1xufVxuXG4ubWF0LXNsaWRlci1taW4tdmFsdWUgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG4ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLFxuLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG4ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLFxuLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNik7XG59XG4ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgLm1hdC1zbGlkZXItdGh1bWIsIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIge1xuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG4ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWIsIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYiB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI2KTtcbn1cblxuLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG59XG5cbi5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG59XG5cbi5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO1xufVxuXG4ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsIC5tYXQtc3RlcC1oZWFkZXI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDQpO1xufVxuQG1lZGlhIChob3Zlcjogbm9uZSkge1xuICAubWF0LXN0ZXAtaGVhZGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG59XG4ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbCxcbi5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFsIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41NCk7XG59XG4ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxcbi5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbi5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZjUxYjU7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg3KTtcbn1cbi5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgY29sb3I6ICNmNDQzMzY7XG59XG5cbi5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cblxuLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMTIpO1xufVxuXG4ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSxcbi5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YWZ0ZXIsXG4ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1zb3J0LWhlYWRlci1hcnJvdyB7XG4gIGNvbG9yOiAjNzU3NTc1O1xufVxuXG4ubWF0LXRhYi1uYXYtYmFyLFxuLm1hdC10YWItaGVhZGVyIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG59XG5cbi5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1uYXYtYmFyLFxuLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlciB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4ubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG5cbi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG5cbi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zOCk7XG59XG5cbi5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dIC5tYXQtdGFiLWhlYWRlcixcbi5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV0ge1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICBib3JkZXItdG9wOiBub25lO1xufVxuXG4ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTk3LCAyMDIsIDIzMywgMC4zKTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhciwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Y1MWI1O1xufVxuLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LWluay1iYXIsIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LWluay1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxMjgsIDE3MSwgMC4zKTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtaW5rLWJhciwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LWluay1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIwNSwgMjEwLCAwLjMpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC1pbmstYmFyLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtaW5rLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQzMzY7XG59XG4ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtaW5rLWJhciwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtaW5rLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxOTcsIDIwMiwgMjMzLCAwLjMpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXIsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGlua3MsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXIsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rcywgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNmNTFiNTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluaywgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluayB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG59XG4ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDEyOCwgMTcxLCAwLjMpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlciwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmtzLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlciwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGlua3MsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNDA4MTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmssIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG59XG4ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gIGJvcmRlci1jb2xvcjogd2hpdGU7XG59XG4ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxcbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksXG4ubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLFxuLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIwNSwgMjEwLCAwLjMpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXIsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGlua3MsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXIsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rcywgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDMzNjtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluaywgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluayB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbn1cbi5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICBib3JkZXItY29sb3I6IHdoaXRlO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xufVxuLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMik7XG59XG5cbi5tYXQtdG9vbGJhciB7XG4gIGJhY2tncm91bmQ6IHdoaXRlc21va2U7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xufVxuLm1hdC10b29sYmFyLm1hdC1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogIzNmNTFiNTtcbiAgY29sb3I6IHdoaXRlO1xufVxuLm1hdC10b29sYmFyLm1hdC1hY2NlbnQge1xuICBiYWNrZ3JvdW5kOiAjZmY0MDgxO1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LXRvb2xiYXIubWF0LXdhcm4ge1xuICBiYWNrZ3JvdW5kOiAjZjQ0MzM2O1xuICBjb2xvcjogd2hpdGU7XG59XG4ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSxcbi5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuLm1hdC10b29sYmFyIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xufVxuLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbi5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LXZhbHVlLFxuLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LFxuLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLm1hdC10b29sYmFyIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gIGNhcmV0LWNvbG9yOiBjdXJyZW50Q29sb3I7XG59XG5cbi5tYXQtdG9vbHRpcCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTcsIDk3LCA5NywgMC45KTtcbn1cblxuLm1hdC10cmVlIHtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG5cbi5tYXQtdHJlZS1ub2RlLFxuLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44Nyk7XG59XG5cbi5tYXQtc25hY2stYmFyLWNvbnRhaW5lciB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIGJhY2tncm91bmQ6ICMzMjMyMzI7XG4gIGJveC1zaGFkb3c6IDBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIHtcbiAgY29sb3I6ICNmZjQwODE7XG59XG5cbi8qIFlvdSBjYW4gYWRkIGdsb2JhbCBzdHlsZXMgdG8gdGhpcyBmaWxlLCBhbmQgYWxzbyBpbXBvcnQgb3RoZXIgc3R5bGUgZmlsZXMgKi9cbmh0bWwsIGJvZHkge1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIHAsIGxpLCB1bCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLnBhbmVsLXN1Y2Nlc3Mge1xuICBjb2xvcjogI0E5RTVBQztcbn1cblxuLnBhbmVsLWVycm9yIHtcbiAgY29sb3I6IHJlZDtcbn0iLCJcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XG4vLyBDdXN0b20gVGhlbWluZyBmb3IgQW5ndWxhciBNYXRlcmlhbFxuLy8gRm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS90aGVtaW5nXG5AaW1wb3J0ICd+QGFuZ3VsYXIvbWF0ZXJpYWwvdGhlbWluZyc7XG4vLyBQbHVzIGltcG9ydHMgZm9yIG90aGVyIGNvbXBvbmVudHMgaW4geW91ciBhcHAuXG5cbi8vIEluY2x1ZGUgdGhlIGNvbW1vbiBzdHlsZXMgZm9yIEFuZ3VsYXIgTWF0ZXJpYWwuIFdlIGluY2x1ZGUgdGhpcyBoZXJlIHNvIHRoYXQgeW91IG9ubHlcbi8vIGhhdmUgdG8gbG9hZCBhIHNpbmdsZSBjc3MgZmlsZSBmb3IgQW5ndWxhciBNYXRlcmlhbCBpbiB5b3VyIGFwcC5cbi8vIEJlIHN1cmUgdGhhdCB5b3Ugb25seSBldmVyIGluY2x1ZGUgdGhpcyBtaXhpbiBvbmNlIVxuQGluY2x1ZGUgbWF0LWNvcmUoKTtcblxuLy8gRGVmaW5lIHRoZSBwYWxldHRlcyBmb3IgeW91ciB0aGVtZSB1c2luZyB0aGUgTWF0ZXJpYWwgRGVzaWduIHBhbGV0dGVzIGF2YWlsYWJsZSBpbiBwYWxldHRlLnNjc3Ncbi8vIChpbXBvcnRlZCBhYm92ZSkuIEZvciBlYWNoIHBhbGV0dGUsIHlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEgZGVmYXVsdCwgbGlnaHRlciwgYW5kIGRhcmtlclxuLy8gaHVlLiBBdmFpbGFibGUgY29sb3IgcGFsZXR0ZXM6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbG9yL1xuJG9ic2N1cmlmeTMtcHJpbWFyeTogbWF0LXBhbGV0dGUoJG1hdC1pbmRpZ28pO1xuJG9ic2N1cmlmeTMtYWNjZW50OiBtYXQtcGFsZXR0ZSgkbWF0LXBpbmssIEEyMDAsIEExMDAsIEE0MDApO1xuXG4vLyBUaGUgd2FybiBwYWxldHRlIGlzIG9wdGlvbmFsIChkZWZhdWx0cyB0byByZWQpLlxuJG9ic2N1cmlmeTMtd2FybjogbWF0LXBhbGV0dGUoJG1hdC1yZWQpO1xuXG4vLyBDcmVhdGUgdGhlIHRoZW1lIG9iamVjdCAoYSBTYXNzIG1hcCBjb250YWluaW5nIGFsbCBvZiB0aGUgcGFsZXR0ZXMpLlxuJG9ic2N1cmlmeTMtdGhlbWU6IG1hdC1saWdodC10aGVtZSgkb2JzY3VyaWZ5My1wcmltYXJ5LCAkb2JzY3VyaWZ5My1hY2NlbnQsICRvYnNjdXJpZnkzLXdhcm4pO1xuXG4vLyBJbmNsdWRlIHRoZW1lIHN0eWxlcyBmb3IgY29yZSBhbmQgZWFjaCBjb21wb25lbnQgdXNlZCBpbiB5b3VyIGFwcC5cbi8vIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gaW1wb3J0IGFuZCBAaW5jbHVkZSB0aGUgdGhlbWUgbWl4aW5zIGZvciBlYWNoIGNvbXBvbmVudFxuLy8gdGhhdCB5b3UgYXJlIHVzaW5nLlxuQGluY2x1ZGUgYW5ndWxhci1tYXRlcmlhbC10aGVtZSgkb2JzY3VyaWZ5My10aGVtZSk7XG5cbi8qIFlvdSBjYW4gYWRkIGdsb2JhbCBzdHlsZXMgdG8gdGhpcyBmaWxlLCBhbmQgYWxzbyBpbXBvcnQgb3RoZXIgc3R5bGUgZmlsZXMgKi9cblxuaHRtbCwgYm9keSB7IGhlaWdodDogMTAwJTsgfVxuYm9keSB7IG1hcmdpbjogMDsgZm9udC1mYW1pbHk6ICRwcmltYXJ5LWZvbnQ7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkfVxuXG5oMSxoMixoMyxoNCxoNSxwLGxpLHVsIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuJHByaW1hcnktZm9udDogJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjtcbiRzZWNvbmRhcnktZm9udDogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknO1xuXG4ucGFuZWwtc3VjY2VzcyB7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xufVxuXG4ucGFuZWwtZXJyb3Ige1xuICAgIGNvbG9yOiByZWQ7XG59IiwiXG4kcHJpbWFyeS1mb250OiAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmO1xuJHNlY29uZGFyeS1mb250OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSSc7XG5cbi8vIENvbG9yc1xuXG4kcHJpbWFyeS1jb2xvcjogI0E5RTVBQzsiXX0= */", '', '']] /***/ }), /***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": /*!****************************************************************************!*\ !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var stylesInDom = {}; var isOldIE = function isOldIE() { var memo; return function memorize() { if (typeof memo === 'undefined') { // Test for IE <= 9 as proposed by Browserhacks // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 // Tests for existence of standard globals is to allow style-loader // to operate correctly into non-standard environments // @see https://github.com/webpack-contrib/style-loader/issues/177 memo = Boolean(window && document && document.all && !window.atob); } return memo; }; }(); var getTarget = function getTarget() { var memo = {}; return function memorize(target) { if (typeof memo[target] === 'undefined') { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; }; }(); function listToStyles(list, options) { var styles = []; var newStyles = {}; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var css = item[1]; var media = item[2]; var sourceMap = item[3]; var part = { css: css, media: media, sourceMap: sourceMap }; if (!newStyles[id]) { styles.push(newStyles[id] = { id: id, parts: [part] }); } else { newStyles[id].parts.push(part); } } return styles; } function addStylesToDom(styles, options) { for (var i = 0; i < styles.length; i++) { var item = styles[i]; var domStyle = stylesInDom[item.id]; var j = 0; if (domStyle) { domStyle.refs++; for (; j < domStyle.parts.length; j++) { domStyle.parts[j](item.parts[j]); } for (; j < item.parts.length; j++) { domStyle.parts.push(addStyle(item.parts[j], options)); } } else { var parts = []; for (; j < item.parts.length; j++) { parts.push(addStyle(item.parts[j], options)); } stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }; } } } function insertStyleElement(options) { var style = document.createElement('style'); if (typeof options.attributes.nonce === 'undefined') { var nonce = true ? __webpack_require__.nc : undefined; if (nonce) { options.attributes.nonce = nonce; } } Object.keys(options.attributes).forEach(function (key) { style.setAttribute(key, options.attributes[key]); }); if (typeof options.insert === 'function') { options.insert(style); } else { var target = getTarget(options.insert || 'head'); if (!target) { throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); } target.appendChild(style); } return style; } function removeStyleElement(style) { // istanbul ignore if if (style.parentNode === null) { return false; } style.parentNode.removeChild(style); } /* istanbul ignore next */ var replaceText = function replaceText() { var textStore = []; return function replace(index, replacement) { textStore[index] = replacement; return textStore.filter(Boolean).join('\n'); }; }(); function applyToSingletonTag(style, index, remove, obj) { var css = remove ? '' : obj.css; // For old IE /* istanbul ignore if */ if (style.styleSheet) { style.styleSheet.cssText = replaceText(index, css); } else { var cssNode = document.createTextNode(css); var childNodes = style.childNodes; if (childNodes[index]) { style.removeChild(childNodes[index]); } if (childNodes.length) { style.insertBefore(cssNode, childNodes[index]); } else { style.appendChild(cssNode); } } } function applyToTag(style, options, obj) { var css = obj.css; var media = obj.media; var sourceMap = obj.sourceMap; if (media) { style.setAttribute('media', media); } if (sourceMap && btoa) { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); } // For old IE /* istanbul ignore if */ if (style.styleSheet) { style.styleSheet.cssText = css; } else { while (style.firstChild) { style.removeChild(style.firstChild); } style.appendChild(document.createTextNode(css)); } } var singleton = null; var singletonCounter = 0; function addStyle(obj, options) { var style; var update; var remove; if (options.singleton) { var styleIndex = singletonCounter++; style = singleton || (singleton = insertStyleElement(options)); update = applyToSingletonTag.bind(null, style, styleIndex, false); remove = applyToSingletonTag.bind(null, style, styleIndex, true); } else { style = insertStyleElement(options); update = applyToTag.bind(null, style, options); remove = function remove() { removeStyleElement(style); }; } update(obj); return function updateStyle(newObj) { if (newObj) { if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { return; } update(obj = newObj); } else { remove(); } }; } module.exports = function (list, options) { options = options || {}; options.attributes = typeof options.attributes === 'object' ? options.attributes : {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of could become:
Note the use of @polyfill in the comment above a ShadowDOM specific style declaration. This is a directive to the styling shim to use the selector in comments in lieu of the next selector when running under polyfill. */ class ShadowCss { constructor() { this.strictStyling = true; } /* * Shim some cssText with the given selector. Returns cssText that can * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css). * * When strictStyling is true: * - selector is the attribute added to all elements inside the host, * - hostSelector is the attribute added to the host itself. */ shimCssText(cssText, selector, hostSelector = '') { const commentsWithHash = extractCommentsWithHash(cssText); cssText = stripComments(cssText); cssText = this._insertDirectives(cssText); const scopedCssText = this._scopeCssText(cssText, selector, hostSelector); return [scopedCssText, ...commentsWithHash].join('\n'); } _insertDirectives(cssText) { cssText = this._insertPolyfillDirectivesInCssText(cssText); return this._insertPolyfillRulesInCssText(cssText); } /* * Process styles to convert native ShadowDOM rules that will trip * up the css parser; we rely on decorating the stylesheet with inert rules. * * For example, we convert this rule: * * polyfill-next-selector { content: ':host menu-item'; } * ::content menu-item { * * to this: * * scopeName menu-item { * **/ _insertPolyfillDirectivesInCssText(cssText) { // Difference with webcomponents.js: does not handle comments return cssText.replace(_cssContentNextSelectorRe, function (...m) { return m[2] + '{'; }); } /* * Process styles to add rules which will only apply under the polyfill * * For example, we convert this rule: * * polyfill-rule { * content: ':host menu-item'; * ... * } * * to this: * * scopeName menu-item {...} * **/ _insertPolyfillRulesInCssText(cssText) { // Difference with webcomponents.js: does not handle comments return cssText.replace(_cssContentRuleRe, (...m) => { const rule = m[0].replace(m[1], '').replace(m[2], ''); return m[4] + rule; }); } /* Ensure styles are scoped. Pseudo-scoping takes a rule like: * * .foo {... } * * and converts this to * * scopeName .foo { ... } */ _scopeCssText(cssText, scopeSelector, hostSelector) { const unscopedRules = this._extractUnscopedRulesFromCssText(cssText); // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively cssText = this._insertPolyfillHostInCssText(cssText); cssText = this._convertColonHost(cssText); cssText = this._convertColonHostContext(cssText); cssText = this._convertShadowDOMSelectors(cssText); if (scopeSelector) { cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector); } cssText = cssText + '\n' + unscopedRules; return cssText.trim(); } /* * Process styles to add rules which will only apply under the polyfill * and do not process via CSSOM. (CSSOM is destructive to rules on rare * occasions, e.g. -webkit-calc on Safari.) * For example, we convert this rule: * * @polyfill-unscoped-rule { * content: 'menu-item'; * ... } * * to this: * * menu-item {...} * **/ _extractUnscopedRulesFromCssText(cssText) { // Difference with webcomponents.js: does not handle comments let r = ''; let m; _cssContentUnscopedRuleRe.lastIndex = 0; while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) { const rule = m[0].replace(m[2], '').replace(m[1], m[4]); r += rule + '\n\n'; } return r; } /* * convert a rule like :host(.foo) > .bar { } * * to * * .foo > .bar */ _convertColonHost(cssText) { return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer); } /* * convert a rule like :host-context(.foo) > .bar { } * * to * * .foo > .bar, .foo scopeName > .bar { } * * and * * :host-context(.foo:host) .bar { ... } * * to * * .foo .bar { ... } */ _convertColonHostContext(cssText) { return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer); } _convertColonRule(cssText, regExp, partReplacer) { // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule return cssText.replace(regExp, function (...m) { if (m[2]) { const parts = m[2].split(','); const r = []; for (let i = 0; i < parts.length; i++) { const p = parts[i].trim(); if (!p) break; r.push(partReplacer(_polyfillHostNoCombinator, p, m[3])); } return r.join(','); } else { return _polyfillHostNoCombinator + m[3]; } }); } _colonHostContextPartReplacer(host, part, suffix) { if (part.indexOf(_polyfillHost) > -1) { return this._colonHostPartReplacer(host, part, suffix); } else { return host + part + suffix + ', ' + part + ' ' + host + suffix; } } _colonHostPartReplacer(host, part, suffix) { return host + part.replace(_polyfillHost, '') + suffix; } /* * Convert combinators like ::shadow and pseudo-elements like ::content * by replacing with space. */ _convertShadowDOMSelectors(cssText) { return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText); } // change a selector like 'div' to 'name div' _scopeSelectors(cssText, scopeSelector, hostSelector) { return processRules(cssText, (rule) => { let selector = rule.selector; let content = rule.content; if (rule.selector[0] != '@') { selector = this._scopeSelector(rule.selector, scopeSelector, hostSelector, this.strictStyling); } else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') || rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) { content = this._scopeSelectors(rule.content, scopeSelector, hostSelector); } return new CssRule(selector, content); }); } _scopeSelector(selector, scopeSelector, hostSelector, strict) { return selector.split(',') .map(part => part.trim().split(_shadowDeepSelectors)) .map((deepParts) => { const [shallowPart, ...otherParts] = deepParts; const applyScope = (shallowPart) => { if (this._selectorNeedsScoping(shallowPart, scopeSelector)) { return strict ? this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) : this._applySelectorScope(shallowPart, scopeSelector, hostSelector); } else { return shallowPart; } }; return [applyScope(shallowPart), ...otherParts].join(' '); }) .join(', '); } _selectorNeedsScoping(selector, scopeSelector) { const re = this._makeScopeMatcher(scopeSelector); return !re.test(selector); } _makeScopeMatcher(scopeSelector) { const lre = /\[/g; const rre = /\]/g; scopeSelector = scopeSelector.replace(lre, '\\[').replace(rre, '\\]'); return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm'); } _applySelectorScope(selector, scopeSelector, hostSelector) { // Difference from webcomponents.js: scopeSelector could not be an array return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector); } // scope via name and [is=name] _applySimpleSelectorScope(selector, scopeSelector, hostSelector) { // In Android browser, the lastIndex is not reset when the regex is used in String.replace() _polyfillHostRe.lastIndex = 0; if (_polyfillHostRe.test(selector)) { const replaceBy = this.strictStyling ? `[${hostSelector}]` : scopeSelector; return selector .replace(_polyfillHostNoCombinatorRe, (hnc, selector) => { return selector.replace(/([^:]*)(:*)(.*)/, (_, before, colon, after) => { return before + replaceBy + colon + after; }); }) .replace(_polyfillHostRe, replaceBy + ' '); } return scopeSelector + ' ' + selector; } // return a selector with [name] suffix on each simple selector // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */ _applyStrictSelectorScope(selector, scopeSelector, hostSelector) { const isRe = /\[is=([^\]]*)\]/g; scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]); const attrName = '[' + scopeSelector + ']'; const _scopeSelectorPart = (p) => { let scopedP = p.trim(); if (!scopedP) { return ''; } if (p.indexOf(_polyfillHostNoCombinator) > -1) { scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector); } else { // remove :host since it should be unnecessary const t = p.replace(_polyfillHostRe, ''); if (t.length > 0) { const matches = t.match(/([^:]*)(:*)(.*)/); if (matches) { scopedP = matches[1] + attrName + matches[2] + matches[3]; } } } return scopedP; }; const safeContent = new SafeSelector(selector); selector = safeContent.content(); let scopedSelector = ''; let startIndex = 0; let res; const sep = /( |>|\+|~(?!=))\s*/g; // If a selector appears before :host it should not be shimmed as it // matches on ancestor elements and not on elements in the host's shadow // `:host-context(div)` is transformed to // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator` // the `div` is not part of the component in the 2nd selectors and should not be scoped. // Historically `component-tag:host` was matching the component so we also want to preserve // this behavior to avoid breaking legacy apps (it should not match). // The behavior should be: // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything) // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a // `:host-context(tag)`) const hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1; // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present let shouldScope = !hasHost; while ((res = sep.exec(selector)) !== null) { const separator = res[1]; const part = selector.slice(startIndex, res.index).trim(); shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; const scopedPart = shouldScope ? _scopeSelectorPart(part) : part; scopedSelector += `${scopedPart} ${separator} `; startIndex = sep.lastIndex; } const part = selector.substring(startIndex); shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1; scopedSelector += shouldScope ? _scopeSelectorPart(part) : part; // replace the placeholders with their original values return safeContent.restore(scopedSelector); } _insertPolyfillHostInCssText(selector) { return selector.replace(_colonHostContextRe, _polyfillHostContext) .replace(_colonHostRe, _polyfillHost); } } class SafeSelector { constructor(selector) { this.placeholders = []; this.index = 0; // Replaces attribute selectors with placeholders. // The WS in [attr="va lue"] would otherwise be interpreted as a selector separator. selector = selector.replace(/(\[[^\]]*\])/g, (_, keep) => { const replaceBy = `__ph-${this.index}__`; this.placeholders.push(keep); this.index++; return replaceBy; }); // Replaces the expression in `:nth-child(2n + 1)` with a placeholder. // WS and "+" would otherwise be interpreted as selector separators. this._content = selector.replace(/(:nth-[-\w]+)(\([^)]+\))/g, (_, pseudo, exp) => { const replaceBy = `__ph-${this.index}__`; this.placeholders.push(exp); this.index++; return pseudo + replaceBy; }); } restore(content) { return content.replace(/__ph-(\d+)__/g, (ph, index) => this.placeholders[+index]); } content() { return this._content; } } const _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?(['"])(.*?)\1[;\s]*}([^{]*?){/gim; const _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; const _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*(['"])(.*?)\3)[;\s]*[^}]*}/gim; const _polyfillHost = '-shadowcsshost'; // note: :host-context pre-processed to -shadowcsshostcontext. const _polyfillHostContext = '-shadowcsscontext'; const _parenSuffix = ')(?:\\((' + '(?:\\([^)(]*\\)|[^)(]*)+?' + ')\\))?([^,{]*)'; const _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim'); const _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim'); const _polyfillHostNoCombinator = _polyfillHost + '-no-combinator'; const _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\s]*)/; const _shadowDOMSelectorsRe = [ /::shadow/g, /::content/g, // Deprecated selectors /\/shadow-deep\//g, /\/shadow\//g, ]; // The deep combinator is deprecated in the CSS spec // Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future. // see https://github.com/angular/angular/pull/17677 const _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)|(?:::ng-deep)/g; const _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$'; const _polyfillHostRe = /-shadowcsshost/gim; const _colonHostRe = /:host/gim; const _colonHostContextRe = /:host-context/gim; const _commentRe = /\/\*\s*[\s\S]*?\*\//g; function stripComments(input) { return input.replace(_commentRe, ''); } const _commentWithHashRe = /\/\*\s*#\s*source(Mapping)?URL=[\s\S]+?\*\//g; function extractCommentsWithHash(input) { return input.match(_commentWithHashRe) || []; } const _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g; const _curlyRe = /([{}])/g; const OPEN_CURLY = '{'; const CLOSE_CURLY = '}'; const BLOCK_PLACEHOLDER = '%BLOCK%'; class CssRule { constructor(selector, content) { this.selector = selector; this.content = content; } } function processRules(input, ruleCallback) { const inputWithEscapedBlocks = escapeBlocks(input); let nextBlockIndex = 0; return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function (...m) { const selector = m[2]; let content = ''; let suffix = m[4]; let contentPrefix = ''; if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) { content = inputWithEscapedBlocks.blocks[nextBlockIndex++]; suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1); contentPrefix = '{'; } const rule = ruleCallback(new CssRule(selector, content)); return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`; }); } class StringWithEscapedBlocks { constructor(escapedString, blocks) { this.escapedString = escapedString; this.blocks = blocks; } } function escapeBlocks(input) { const inputParts = input.split(_curlyRe); const resultParts = []; const escapedBlocks = []; let bracketCount = 0; let currentBlockParts = []; for (let partIndex = 0; partIndex < inputParts.length; partIndex++) { const part = inputParts[partIndex]; if (part == CLOSE_CURLY) { bracketCount--; } if (bracketCount > 0) { currentBlockParts.push(part); } else { if (currentBlockParts.length > 0) { escapedBlocks.push(currentBlockParts.join('')); resultParts.push(BLOCK_PLACEHOLDER); currentBlockParts = []; } resultParts.push(part); } if (part == OPEN_CURLY) { bracketCount++; } } if (currentBlockParts.length > 0) { escapedBlocks.push(currentBlockParts.join('')); resultParts.push(BLOCK_PLACEHOLDER); } return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const COMPONENT_VARIABLE = '%COMP%'; const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`; const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`; class StylesCompileDependency { constructor(name, moduleUrl, setValue) { this.name = name; this.moduleUrl = moduleUrl; this.setValue = setValue; } } class CompiledStylesheet { constructor(outputCtx, stylesVar, dependencies, isShimmed, meta) { this.outputCtx = outputCtx; this.stylesVar = stylesVar; this.dependencies = dependencies; this.isShimmed = isShimmed; this.meta = meta; } } class StyleCompiler { constructor(_urlResolver) { this._urlResolver = _urlResolver; this._shadowCss = new ShadowCss(); } compileComponent(outputCtx, comp) { const template = comp.template; return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({ styles: template.styles, styleUrls: template.styleUrls, moduleUrl: identifierModuleUrl(comp.type) }), this.needsStyleShim(comp), true); } compileStyles(outputCtx, comp, stylesheet, shim = this.needsStyleShim(comp)) { return this._compileStyles(outputCtx, comp, stylesheet, shim, false); } needsStyleShim(comp) { return comp.template.encapsulation === ViewEncapsulation.Emulated; } _compileStyles(outputCtx, comp, stylesheet, shim, isComponentStylesheet) { const styleExpressions = stylesheet.styles.map(plainStyle => literal(this._shimIfNeeded(plainStyle, shim))); const dependencies = []; stylesheet.styleUrls.forEach((styleUrl) => { const exprIndex = styleExpressions.length; // Note: This placeholder will be filled later. styleExpressions.push(null); dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, (value) => styleExpressions[exprIndex] = outputCtx.importExpr(value))); }); // styles variable contains plain strings and arrays of other styles arrays (recursive), // so we set its type to dynamic. const stylesVar = getStylesVarName(isComponentStylesheet ? comp : null); const stmt = variable(stylesVar) .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const]))) .toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [ StmtModifier.Final, StmtModifier.Exported ]); outputCtx.statements.push(stmt); return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet); } _shimIfNeeded(style, shim) { return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style; } } function getStylesVarName(component) { let result = `styles`; if (component) { result += `_${identifierName(component.type)}`; } return result; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * A path is an ordered set of elements. Typically a path is to a * particular offset in a source file. The head of the list is the top * most node. The tail is the node that contains the offset directly. * * For example, the expression `a + b + c` might have an ast that looks * like: * + * / \ * a + * / \ * b c * * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10, * 'c' at 9-10]` and the path the node at offset 1 would be * `['+' at 1-10, 'a' at 1-2]`. */ class AstPath { constructor(path, position = -1) { this.path = path; this.position = position; } get empty() { return !this.path || !this.path.length; } get head() { return this.path[0]; } get tail() { return this.path[this.path.length - 1]; } parentOf(node) { return node && this.path[this.path.indexOf(node) - 1]; } childOf(node) { return this.path[this.path.indexOf(node) + 1]; } first(ctor) { for (let i = this.path.length - 1; i >= 0; i--) { let item = this.path[i]; if (item instanceof ctor) return item; } } push(node) { this.path.push(node); } pop() { return this.path.pop(); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ class Text$3 { constructor(value, sourceSpan, i18n) { this.value = value; this.sourceSpan = sourceSpan; this.i18n = i18n; } visit(visitor, context) { return visitor.visitText(this, context); } } class Expansion { constructor(switchValue, type, cases, sourceSpan, switchValueSourceSpan, i18n) { this.switchValue = switchValue; this.type = type; this.cases = cases; this.sourceSpan = sourceSpan; this.switchValueSourceSpan = switchValueSourceSpan; this.i18n = i18n; } visit(visitor, context) { return visitor.visitExpansion(this, context); } } class ExpansionCase { constructor(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) { this.value = value; this.expression = expression; this.sourceSpan = sourceSpan; this.valueSourceSpan = valueSourceSpan; this.expSourceSpan = expSourceSpan; } visit(visitor, context) { return visitor.visitExpansionCase(this, context); } } class Attribute { constructor(name, value, sourceSpan, valueSpan, i18n) { this.name = name; this.value = value; this.sourceSpan = sourceSpan; this.valueSpan = valueSpan; this.i18n = i18n; } visit(visitor, context) { return visitor.visitAttribute(this, context); } } class Element$1 { constructor(name, attrs, children, sourceSpan, startSourceSpan = null, endSourceSpan = null, i18n) { this.name = name; this.attrs = attrs; this.children = children; this.sourceSpan = sourceSpan; this.startSourceSpan = startSourceSpan; this.endSourceSpan = endSourceSpan; this.i18n = i18n; } visit(visitor, context) { return visitor.visitElement(this, context); } } class Comment { constructor(value, sourceSpan) { this.value = value; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitComment(this, context); } } function visitAll$1(visitor, nodes, context = null) { const result = []; const visit = visitor.visit ? (ast) => visitor.visit(ast, context) || ast.visit(visitor, context) : (ast) => ast.visit(visitor, context); nodes.forEach(ast => { const astResult = visit(ast); if (astResult) { result.push(astResult); } }); return result; } class RecursiveVisitor$1 { constructor() { } visitElement(ast, context) { this.visitChildren(context, visit => { visit(ast.attrs); visit(ast.children); }); } visitAttribute(ast, context) { } visitText(ast, context) { } visitComment(ast, context) { } visitExpansion(ast, context) { return this.visitChildren(context, visit => { visit(ast.cases); }); } visitExpansionCase(ast, context) { } visitChildren(context, cb) { let results = []; let t = this; function visit(children) { if (children) results.push(visitAll$1(t, children, context)); } cb(visit); return Array.prototype.concat.apply([], results); } } function spanOf(ast) { const start = ast.sourceSpan.start.offset; let end = ast.sourceSpan.end.offset; if (ast instanceof Element$1) { if (ast.endSourceSpan) { end = ast.endSourceSpan.end.offset; } else if (ast.children && ast.children.length) { end = spanOf(ast.children[ast.children.length - 1]).end; } } return { start, end }; } function findNode(nodes, position) { const path = []; const visitor = new class extends RecursiveVisitor$1 { visit(ast, context) { const span = spanOf(ast); if (span.start <= position && position < span.end) { path.push(ast); } else { // Returning a value here will result in the children being skipped. return true; } } }; visitAll$1(visitor, nodes); return new AstPath(path, position); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var TokenType; (function (TokenType) { TokenType[TokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START"; TokenType[TokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END"; TokenType[TokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID"; TokenType[TokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE"; TokenType[TokenType["TEXT"] = 4] = "TEXT"; TokenType[TokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT"; TokenType[TokenType["RAW_TEXT"] = 6] = "RAW_TEXT"; TokenType[TokenType["COMMENT_START"] = 7] = "COMMENT_START"; TokenType[TokenType["COMMENT_END"] = 8] = "COMMENT_END"; TokenType[TokenType["CDATA_START"] = 9] = "CDATA_START"; TokenType[TokenType["CDATA_END"] = 10] = "CDATA_END"; TokenType[TokenType["ATTR_NAME"] = 11] = "ATTR_NAME"; TokenType[TokenType["ATTR_QUOTE"] = 12] = "ATTR_QUOTE"; TokenType[TokenType["ATTR_VALUE"] = 13] = "ATTR_VALUE"; TokenType[TokenType["DOC_TYPE"] = 14] = "DOC_TYPE"; TokenType[TokenType["EXPANSION_FORM_START"] = 15] = "EXPANSION_FORM_START"; TokenType[TokenType["EXPANSION_CASE_VALUE"] = 16] = "EXPANSION_CASE_VALUE"; TokenType[TokenType["EXPANSION_CASE_EXP_START"] = 17] = "EXPANSION_CASE_EXP_START"; TokenType[TokenType["EXPANSION_CASE_EXP_END"] = 18] = "EXPANSION_CASE_EXP_END"; TokenType[TokenType["EXPANSION_FORM_END"] = 19] = "EXPANSION_FORM_END"; TokenType[TokenType["EOF"] = 20] = "EOF"; })(TokenType || (TokenType = {})); class Token { constructor(type, parts, sourceSpan) { this.type = type; this.parts = parts; this.sourceSpan = sourceSpan; } } class TokenError extends ParseError { constructor(errorMsg, tokenType, span) { super(span, errorMsg); this.tokenType = tokenType; } } class TokenizeResult { constructor(tokens, errors) { this.tokens = tokens; this.errors = errors; } } function tokenize(source, url, getTagDefinition, options = {}) { return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, options).tokenize(); } const _CR_OR_CRLF_REGEXP = /\r\n?/g; function _unexpectedCharacterErrorMsg(charCode) { const char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode); return `Unexpected character "${char}"`; } function _unknownEntityErrorMsg(entitySrc) { return `Unknown entity "${entitySrc}" - use the "&#;" or "&#x;" syntax`; } class _ControlFlowError { constructor(error) { this.error = error; } } // See http://www.w3.org/TR/html51/syntax.html#writing class _Tokenizer { /** * @param _file The html source file being tokenized. * @param _getTagDefinition A function that will retrieve a tag definition for a given tag name. * @param options Configuration of the tokenization. */ constructor(_file, _getTagDefinition, options) { this._getTagDefinition = _getTagDefinition; this._currentTokenStart = null; this._currentTokenType = null; this._expansionCaseStack = []; this._inInterpolation = false; this.tokens = []; this.errors = []; this._tokenizeIcu = options.tokenizeExpansionForms || false; this._interpolationConfig = options.interpolationConfig || DEFAULT_INTERPOLATION_CONFIG; this._leadingTriviaCodePoints = options.leadingTriviaChars && options.leadingTriviaChars.map(c => c.codePointAt(0) || 0); const range = options.range || { endPos: _file.content.length, startPos: 0, startLine: 0, startCol: 0 }; this._cursor = options.escapedString ? new EscapedCharacterCursor(_file, range) : new PlainCharacterCursor(_file, range); try { this._cursor.init(); } catch (e) { this.handleError(e); } } _processCarriageReturns(content) { // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream // In order to keep the original position in the source, we can not // pre-process it. // Instead CRs are processed right before instantiating the tokens. return content.replace(_CR_OR_CRLF_REGEXP, '\n'); } tokenize() { while (this._cursor.peek() !== $EOF) { const start = this._cursor.clone(); try { if (this._attemptCharCode($LT)) { if (this._attemptCharCode($BANG)) { if (this._attemptCharCode($LBRACKET)) { this._consumeCdata(start); } else if (this._attemptCharCode($MINUS)) { this._consumeComment(start); } else { this._consumeDocType(start); } } else if (this._attemptCharCode($SLASH)) { this._consumeTagClose(start); } else { this._consumeTagOpen(start); } } else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) { this._consumeText(); } } catch (e) { this.handleError(e); } } this._beginToken(TokenType.EOF); this._endToken([]); return new TokenizeResult(mergeTextTokens(this.tokens), this.errors); } /** * @returns whether an ICU token has been created * @internal */ _tokenizeExpansionForm() { if (this.isExpansionFormStart()) { this._consumeExpansionFormStart(); return true; } if (isExpansionCaseStart(this._cursor.peek()) && this._isInExpansionForm()) { this._consumeExpansionCaseStart(); return true; } if (this._cursor.peek() === $RBRACE) { if (this._isInExpansionCase()) { this._consumeExpansionCaseEnd(); return true; } if (this._isInExpansionForm()) { this._consumeExpansionFormEnd(); return true; } } return false; } _beginToken(type, start = this._cursor.clone()) { this._currentTokenStart = start; this._currentTokenType = type; } _endToken(parts, end = this._cursor.clone()) { if (this._currentTokenStart === null) { throw new TokenError('Programming error - attempted to end a token when there was no start to the token', this._currentTokenType, this._cursor.getSpan(end)); } if (this._currentTokenType === null) { throw new TokenError('Programming error - attempted to end a token which has no token type', null, this._cursor.getSpan(this._currentTokenStart)); } const token = new Token(this._currentTokenType, parts, this._cursor.getSpan(this._currentTokenStart, this._leadingTriviaCodePoints)); this.tokens.push(token); this._currentTokenStart = null; this._currentTokenType = null; return token; } _createError(msg, span) { if (this._isInExpansionForm()) { msg += ` (Do you have an unescaped "{" in your template? Use "{{ '{' }}") to escape it.)`; } const error = new TokenError(msg, this._currentTokenType, span); this._currentTokenStart = null; this._currentTokenType = null; return new _ControlFlowError(error); } handleError(e) { if (e instanceof CursorError) { e = this._createError(e.msg, this._cursor.getSpan(e.cursor)); } if (e instanceof _ControlFlowError) { this.errors.push(e.error); } else { throw e; } } _attemptCharCode(charCode) { if (this._cursor.peek() === charCode) { this._cursor.advance(); return true; } return false; } _attemptCharCodeCaseInsensitive(charCode) { if (compareCharCodeCaseInsensitive(this._cursor.peek(), charCode)) { this._cursor.advance(); return true; } return false; } _requireCharCode(charCode) { const location = this._cursor.clone(); if (!this._attemptCharCode(charCode)) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); } } _attemptStr(chars) { const len = chars.length; if (this._cursor.charsLeft() < len) { return false; } const initialPosition = this._cursor.clone(); for (let i = 0; i < len; i++) { if (!this._attemptCharCode(chars.charCodeAt(i))) { // If attempting to parse the string fails, we want to reset the parser // to where it was before the attempt this._cursor = initialPosition; return false; } } return true; } _attemptStrCaseInsensitive(chars) { for (let i = 0; i < chars.length; i++) { if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) { return false; } } return true; } _requireStr(chars) { const location = this._cursor.clone(); if (!this._attemptStr(chars)) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location)); } } _attemptCharCodeUntilFn(predicate) { while (!predicate(this._cursor.peek())) { this._cursor.advance(); } } _requireCharCodeUntilFn(predicate, len) { const start = this._cursor.clone(); this._attemptCharCodeUntilFn(predicate); const end = this._cursor.clone(); if (end.diff(start) < len) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); } } _attemptUntilChar(char) { while (this._cursor.peek() !== char) { this._cursor.advance(); } } _readChar(decodeEntities) { if (decodeEntities && this._cursor.peek() === $AMPERSAND) { return this._decodeEntity(); } else { // Don't rely upon reading directly from `_input` as the actual char value // may have been generated from an escape sequence. const char = String.fromCodePoint(this._cursor.peek()); this._cursor.advance(); return char; } } _decodeEntity() { const start = this._cursor.clone(); this._cursor.advance(); if (this._attemptCharCode($HASH)) { const isHex = this._attemptCharCode($x) || this._attemptCharCode($X); const codeStart = this._cursor.clone(); this._attemptCharCodeUntilFn(isDigitEntityEnd); if (this._cursor.peek() != $SEMICOLON) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan()); } const strNum = this._cursor.getChars(codeStart); this._cursor.advance(); try { const charCode = parseInt(strNum, isHex ? 16 : 10); return String.fromCharCode(charCode); } catch (_a) { throw this._createError(_unknownEntityErrorMsg(this._cursor.getChars(start)), this._cursor.getSpan()); } } else { const nameStart = this._cursor.clone(); this._attemptCharCodeUntilFn(isNamedEntityEnd); if (this._cursor.peek() != $SEMICOLON) { this._cursor = nameStart; return '&'; } const name = this._cursor.getChars(nameStart); this._cursor.advance(); const char = NAMED_ENTITIES[name]; if (!char) { throw this._createError(_unknownEntityErrorMsg(name), this._cursor.getSpan(start)); } return char; } } _consumeRawText(decodeEntities, endMarkerPredicate) { this._beginToken(decodeEntities ? TokenType.ESCAPABLE_RAW_TEXT : TokenType.RAW_TEXT); const parts = []; while (true) { const tagCloseStart = this._cursor.clone(); const foundEndMarker = endMarkerPredicate(); this._cursor = tagCloseStart; if (foundEndMarker) { break; } parts.push(this._readChar(decodeEntities)); } return this._endToken([this._processCarriageReturns(parts.join(''))]); } _consumeComment(start) { this._beginToken(TokenType.COMMENT_START, start); this._requireCharCode($MINUS); this._endToken([]); this._consumeRawText(false, () => this._attemptStr('-->')); this._beginToken(TokenType.COMMENT_END); this._requireStr('-->'); this._endToken([]); } _consumeCdata(start) { this._beginToken(TokenType.CDATA_START, start); this._requireStr('CDATA['); this._endToken([]); this._consumeRawText(false, () => this._attemptStr(']]>')); this._beginToken(TokenType.CDATA_END); this._requireStr(']]>'); this._endToken([]); } _consumeDocType(start) { this._beginToken(TokenType.DOC_TYPE, start); const contentStart = this._cursor.clone(); this._attemptUntilChar($GT); const content = this._cursor.getChars(contentStart); this._cursor.advance(); this._endToken([content]); } _consumePrefixAndName() { const nameOrPrefixStart = this._cursor.clone(); let prefix = ''; while (this._cursor.peek() !== $COLON && !isPrefixEnd(this._cursor.peek())) { this._cursor.advance(); } let nameStart; if (this._cursor.peek() === $COLON) { prefix = this._cursor.getChars(nameOrPrefixStart); this._cursor.advance(); nameStart = this._cursor.clone(); } else { nameStart = nameOrPrefixStart; } this._requireCharCodeUntilFn(isNameEnd, prefix === '' ? 0 : 1); const name = this._cursor.getChars(nameStart); return [prefix, name]; } _consumeTagOpen(start) { let tagName; let prefix; let openTagToken; let tokensBeforeTagOpen = this.tokens.length; const innerStart = this._cursor.clone(); try { if (!isAsciiLetter(this._cursor.peek())) { throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start)); } openTagToken = this._consumeTagOpenStart(start); prefix = openTagToken.parts[0]; tagName = openTagToken.parts[1]; this._attemptCharCodeUntilFn(isNotWhitespace); while (this._cursor.peek() !== $SLASH && this._cursor.peek() !== $GT) { this._consumeAttributeName(); this._attemptCharCodeUntilFn(isNotWhitespace); if (this._attemptCharCode($EQ)) { this._attemptCharCodeUntilFn(isNotWhitespace); this._consumeAttributeValue(); } this._attemptCharCodeUntilFn(isNotWhitespace); } this._consumeTagOpenEnd(); } catch (e) { if (e instanceof _ControlFlowError) { // When the start tag is invalid (including invalid "attributes"), assume we want a "<" this._cursor = innerStart; if (openTagToken) { this.tokens.length = tokensBeforeTagOpen; } // Back to back text tokens are merged at the end this._beginToken(TokenType.TEXT, start); this._endToken(['<']); return; } throw e; } const contentTokenType = this._getTagDefinition(tagName).contentType; if (contentTokenType === TagContentType.RAW_TEXT) { this._consumeRawTextWithTagClose(prefix, tagName, false); } else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) { this._consumeRawTextWithTagClose(prefix, tagName, true); } } _consumeRawTextWithTagClose(prefix, tagName, decodeEntities) { const textToken = this._consumeRawText(decodeEntities, () => { if (!this._attemptCharCode($LT)) return false; if (!this._attemptCharCode($SLASH)) return false; this._attemptCharCodeUntilFn(isNotWhitespace); if (!this._attemptStrCaseInsensitive(tagName)) return false; this._attemptCharCodeUntilFn(isNotWhitespace); return this._attemptCharCode($GT); }); this._beginToken(TokenType.TAG_CLOSE); this._requireCharCodeUntilFn(code => code === $GT, 3); this._cursor.advance(); // Consume the `>` this._endToken([prefix, tagName]); } _consumeTagOpenStart(start) { this._beginToken(TokenType.TAG_OPEN_START, start); const parts = this._consumePrefixAndName(); return this._endToken(parts); } _consumeAttributeName() { const attrNameStart = this._cursor.peek(); if (attrNameStart === $SQ || attrNameStart === $DQ) { throw this._createError(_unexpectedCharacterErrorMsg(attrNameStart), this._cursor.getSpan()); } this._beginToken(TokenType.ATTR_NAME); const prefixAndName = this._consumePrefixAndName(); this._endToken(prefixAndName); } _consumeAttributeValue() { let value; if (this._cursor.peek() === $SQ || this._cursor.peek() === $DQ) { this._beginToken(TokenType.ATTR_QUOTE); const quoteChar = this._cursor.peek(); this._cursor.advance(); this._endToken([String.fromCodePoint(quoteChar)]); this._beginToken(TokenType.ATTR_VALUE); const parts = []; while (this._cursor.peek() !== quoteChar) { parts.push(this._readChar(true)); } value = parts.join(''); this._endToken([this._processCarriageReturns(value)]); this._beginToken(TokenType.ATTR_QUOTE); this._cursor.advance(); this._endToken([String.fromCodePoint(quoteChar)]); } else { this._beginToken(TokenType.ATTR_VALUE); const valueStart = this._cursor.clone(); this._requireCharCodeUntilFn(isNameEnd, 1); value = this._cursor.getChars(valueStart); this._endToken([this._processCarriageReturns(value)]); } } _consumeTagOpenEnd() { const tokenType = this._attemptCharCode($SLASH) ? TokenType.TAG_OPEN_END_VOID : TokenType.TAG_OPEN_END; this._beginToken(tokenType); this._requireCharCode($GT); this._endToken([]); } _consumeTagClose(start) { this._beginToken(TokenType.TAG_CLOSE, start); this._attemptCharCodeUntilFn(isNotWhitespace); const prefixAndName = this._consumePrefixAndName(); this._attemptCharCodeUntilFn(isNotWhitespace); this._requireCharCode($GT); this._endToken(prefixAndName); } _consumeExpansionFormStart() { this._beginToken(TokenType.EXPANSION_FORM_START); this._requireCharCode($LBRACE); this._endToken([]); this._expansionCaseStack.push(TokenType.EXPANSION_FORM_START); this._beginToken(TokenType.RAW_TEXT); const condition = this._readUntil($COMMA); this._endToken([condition]); this._requireCharCode($COMMA); this._attemptCharCodeUntilFn(isNotWhitespace); this._beginToken(TokenType.RAW_TEXT); const type = this._readUntil($COMMA); this._endToken([type]); this._requireCharCode($COMMA); this._attemptCharCodeUntilFn(isNotWhitespace); } _consumeExpansionCaseStart() { this._beginToken(TokenType.EXPANSION_CASE_VALUE); const value = this._readUntil($LBRACE).trim(); this._endToken([value]); this._attemptCharCodeUntilFn(isNotWhitespace); this._beginToken(TokenType.EXPANSION_CASE_EXP_START); this._requireCharCode($LBRACE); this._endToken([]); this._attemptCharCodeUntilFn(isNotWhitespace); this._expansionCaseStack.push(TokenType.EXPANSION_CASE_EXP_START); } _consumeExpansionCaseEnd() { this._beginToken(TokenType.EXPANSION_CASE_EXP_END); this._requireCharCode($RBRACE); this._endToken([]); this._attemptCharCodeUntilFn(isNotWhitespace); this._expansionCaseStack.pop(); } _consumeExpansionFormEnd() { this._beginToken(TokenType.EXPANSION_FORM_END); this._requireCharCode($RBRACE); this._endToken([]); this._expansionCaseStack.pop(); } _consumeText() { const start = this._cursor.clone(); this._beginToken(TokenType.TEXT, start); const parts = []; do { if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) { parts.push(this._interpolationConfig.start); this._inInterpolation = true; } else if (this._interpolationConfig && this._inInterpolation && this._attemptStr(this._interpolationConfig.end)) { parts.push(this._interpolationConfig.end); this._inInterpolation = false; } else { parts.push(this._readChar(true)); } } while (!this._isTextEnd()); this._endToken([this._processCarriageReturns(parts.join(''))]); } _isTextEnd() { if (this._cursor.peek() === $LT || this._cursor.peek() === $EOF) { return true; } if (this._tokenizeIcu && !this._inInterpolation) { if (this.isExpansionFormStart()) { // start of an expansion form return true; } if (this._cursor.peek() === $RBRACE && this._isInExpansionCase()) { // end of and expansion case return true; } } return false; } _readUntil(char) { const start = this._cursor.clone(); this._attemptUntilChar(char); return this._cursor.getChars(start); } _isInExpansionCase() { return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === TokenType.EXPANSION_CASE_EXP_START; } _isInExpansionForm() { return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === TokenType.EXPANSION_FORM_START; } isExpansionFormStart() { if (this._cursor.peek() !== $LBRACE) { return false; } if (this._interpolationConfig) { const start = this._cursor.clone(); const isInterpolation = this._attemptStr(this._interpolationConfig.start); this._cursor = start; return !isInterpolation; } return true; } } function isNotWhitespace(code) { return !isWhitespace(code) || code === $EOF; } function isNameEnd(code) { return isWhitespace(code) || code === $GT || code === $SLASH || code === $SQ || code === $DQ || code === $EQ; } function isPrefixEnd(code) { return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9); } function isDigitEntityEnd(code) { return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code); } function isNamedEntityEnd(code) { return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code); } function isExpansionCaseStart(peek) { return peek === $EQ || isAsciiLetter(peek) || isDigit(peek); } function compareCharCodeCaseInsensitive(code1, code2) { return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2); } function toUpperCaseCharCode(code) { return code >= $a && code <= $z ? code - $a + $A : code; } function mergeTextTokens(srcTokens) { const dstTokens = []; let lastDstToken = undefined; for (let i = 0; i < srcTokens.length; i++) { const token = srcTokens[i]; if (lastDstToken && lastDstToken.type == TokenType.TEXT && token.type == TokenType.TEXT) { lastDstToken.parts[0] += token.parts[0]; lastDstToken.sourceSpan.end = token.sourceSpan.end; } else { lastDstToken = token; dstTokens.push(lastDstToken); } } return dstTokens; } class PlainCharacterCursor { constructor(fileOrCursor, range) { if (fileOrCursor instanceof PlainCharacterCursor) { this.file = fileOrCursor.file; this.input = fileOrCursor.input; this.end = fileOrCursor.end; this.state = Object.assign({}, fileOrCursor.state); } else { if (!range) { throw new Error('Programming error: the range argument must be provided with a file argument.'); } this.file = fileOrCursor; this.input = fileOrCursor.content; this.end = range.endPos; this.state = { peek: -1, offset: range.startPos, line: range.startLine, column: range.startCol, }; } } clone() { return new PlainCharacterCursor(this); } peek() { return this.state.peek; } charsLeft() { return this.end - this.state.offset; } diff(other) { return this.state.offset - other.state.offset; } advance() { this.advanceState(this.state); } init() { this.updatePeek(this.state); } getSpan(start, leadingTriviaCodePoints) { start = start || this; if (leadingTriviaCodePoints) { start = start.clone(); while (this.diff(start) > 0 && leadingTriviaCodePoints.indexOf(start.peek()) !== -1) { start.advance(); } } return new ParseSourceSpan(new ParseLocation(start.file, start.state.offset, start.state.line, start.state.column), new ParseLocation(this.file, this.state.offset, this.state.line, this.state.column)); } getChars(start) { return this.input.substring(start.state.offset, this.state.offset); } charAt(pos) { return this.input.charCodeAt(pos); } advanceState(state) { if (state.offset >= this.end) { this.state = state; throw new CursorError('Unexpected character "EOF"', this); } const currentChar = this.charAt(state.offset); if (currentChar === $LF) { state.line++; state.column = 0; } else if (!isNewLine(currentChar)) { state.column++; } state.offset++; this.updatePeek(state); } updatePeek(state) { state.peek = state.offset >= this.end ? $EOF : this.charAt(state.offset); } } class EscapedCharacterCursor extends PlainCharacterCursor { constructor(fileOrCursor, range) { if (fileOrCursor instanceof EscapedCharacterCursor) { super(fileOrCursor); this.internalState = Object.assign({}, fileOrCursor.internalState); } else { super(fileOrCursor, range); this.internalState = this.state; } } advance() { this.state = this.internalState; super.advance(); this.processEscapeSequence(); } init() { super.init(); this.processEscapeSequence(); } clone() { return new EscapedCharacterCursor(this); } getChars(start) { const cursor = start.clone(); let chars = ''; while (cursor.internalState.offset < this.internalState.offset) { chars += String.fromCodePoint(cursor.peek()); cursor.advance(); } return chars; } /** * Process the escape sequence that starts at the current position in the text. * * This method is called to ensure that `peek` has the unescaped value of escape sequences. */ processEscapeSequence() { const peek = () => this.internalState.peek; if (peek() === $BACKSLASH) { // We have hit an escape sequence so we need the internal state to become independent // of the external state. this.internalState = Object.assign({}, this.state); // Move past the backslash this.advanceState(this.internalState); // First check for standard control char sequences if (peek() === $n) { this.state.peek = $LF; } else if (peek() === $r) { this.state.peek = $CR; } else if (peek() === $v) { this.state.peek = $VTAB; } else if (peek() === $t) { this.state.peek = $TAB; } else if (peek() === $b) { this.state.peek = $BSPACE; } else if (peek() === $f) { this.state.peek = $FF; } // Now consider more complex sequences else if (peek() === $u) { // Unicode code-point sequence this.advanceState(this.internalState); // advance past the `u` char if (peek() === $LBRACE) { // Variable length Unicode, e.g. `\x{123}` this.advanceState(this.internalState); // advance past the `{` char // Advance past the variable number of hex digits until we hit a `}` char const digitStart = this.clone(); let length = 0; while (peek() !== $RBRACE) { this.advanceState(this.internalState); length++; } this.state.peek = this.decodeHexDigits(digitStart, length); } else { // Fixed length Unicode, e.g. `\u1234` const digitStart = this.clone(); this.advanceState(this.internalState); this.advanceState(this.internalState); this.advanceState(this.internalState); this.state.peek = this.decodeHexDigits(digitStart, 4); } } else if (peek() === $x) { // Hex char code, e.g. `\x2F` this.advanceState(this.internalState); // advance past the `x` char const digitStart = this.clone(); this.advanceState(this.internalState); this.state.peek = this.decodeHexDigits(digitStart, 2); } else if (isOctalDigit(peek())) { // Octal char code, e.g. `\012`, let octal = ''; let length = 0; let previous = this.clone(); while (isOctalDigit(peek()) && length < 3) { previous = this.clone(); octal += String.fromCodePoint(peek()); this.advanceState(this.internalState); length++; } this.state.peek = parseInt(octal, 8); // Backup one char this.internalState = previous.internalState; } else if (isNewLine(this.internalState.peek)) { // Line continuation `\` followed by a new line this.advanceState(this.internalState); // advance over the newline this.state = this.internalState; } else { // If none of the `if` blocks were executed then we just have an escaped normal character. // In that case we just, effectively, skip the backslash from the character. this.state.peek = this.internalState.peek; } } } decodeHexDigits(start, length) { const hex = this.input.substr(start.internalState.offset, length); const charCode = parseInt(hex, 16); if (!isNaN(charCode)) { return charCode; } else { start.state = start.internalState; throw new CursorError('Invalid hexadecimal escape sequence', start); } } } class CursorError { constructor(msg, cursor) { this.msg = msg; this.cursor = cursor; } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ class TreeError extends ParseError { constructor(elementName, span, msg) { super(span, msg); this.elementName = elementName; } static create(elementName, span, msg) { return new TreeError(elementName, span, msg); } } class ParseTreeResult { constructor(rootNodes, errors) { this.rootNodes = rootNodes; this.errors = errors; } } class Parser { constructor(getTagDefinition) { this.getTagDefinition = getTagDefinition; } parse(source, url, options) { const tokensAndErrors = tokenize(source, url, this.getTagDefinition, options); const treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build(); return new ParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors.concat(treeAndErrors.errors)); } } class _TreeBuilder { constructor(tokens, getTagDefinition) { this.tokens = tokens; this.getTagDefinition = getTagDefinition; this._index = -1; this._rootNodes = []; this._errors = []; this._elementStack = []; this._advance(); } build() { while (this._peek.type !== TokenType.EOF) { if (this._peek.type === TokenType.TAG_OPEN_START) { this._consumeStartTag(this._advance()); } else if (this._peek.type === TokenType.TAG_CLOSE) { this._consumeEndTag(this._advance()); } else if (this._peek.type === TokenType.CDATA_START) { this._closeVoidElement(); this._consumeCdata(this._advance()); } else if (this._peek.type === TokenType.COMMENT_START) { this._closeVoidElement(); this._consumeComment(this._advance()); } else if (this._peek.type === TokenType.TEXT || this._peek.type === TokenType.RAW_TEXT || this._peek.type === TokenType.ESCAPABLE_RAW_TEXT) { this._closeVoidElement(); this._consumeText(this._advance()); } else if (this._peek.type === TokenType.EXPANSION_FORM_START) { this._consumeExpansion(this._advance()); } else { // Skip all other tokens... this._advance(); } } return new ParseTreeResult(this._rootNodes, this._errors); } _advance() { const prev = this._peek; if (this._index < this.tokens.length - 1) { // Note: there is always an EOF token at the end this._index++; } this._peek = this.tokens[this._index]; return prev; } _advanceIf(type) { if (this._peek.type === type) { return this._advance(); } return null; } _consumeCdata(startToken) { this._consumeText(this._advance()); this._advanceIf(TokenType.CDATA_END); } _consumeComment(token) { const text = this._advanceIf(TokenType.RAW_TEXT); this._advanceIf(TokenType.COMMENT_END); const value = text != null ? text.parts[0].trim() : null; this._addToParent(new Comment(value, token.sourceSpan)); } _consumeExpansion(token) { const switchValue = this._advance(); const type = this._advance(); const cases = []; // read = while (this._peek.type === TokenType.EXPANSION_CASE_VALUE) { const expCase = this._parseExpansionCase(); if (!expCase) return; // error cases.push(expCase); } // read the final } if (this._peek.type !== TokenType.EXPANSION_FORM_END) { this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '}'.`)); return; } const sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end); this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan)); this._advance(); } _parseExpansionCase() { const value = this._advance(); // read { if (this._peek.type !== TokenType.EXPANSION_CASE_EXP_START) { this._errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '{'.`)); return null; } // read until } const start = this._advance(); const exp = this._collectExpansionExpTokens(start); if (!exp) return null; const end = this._advance(); exp.push(new Token(TokenType.EOF, [], end.sourceSpan)); // parse everything in between { and } const parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build(); if (parsedExp.errors.length > 0) { this._errors = this._errors.concat(parsedExp.errors); return null; } const sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end); const expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end); return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan); } _collectExpansionExpTokens(start) { const exp = []; const expansionFormStack = [TokenType.EXPANSION_CASE_EXP_START]; while (true) { if (this._peek.type === TokenType.EXPANSION_FORM_START || this._peek.type === TokenType.EXPANSION_CASE_EXP_START) { expansionFormStack.push(this._peek.type); } if (this._peek.type === TokenType.EXPANSION_CASE_EXP_END) { if (lastOnStack(expansionFormStack, TokenType.EXPANSION_CASE_EXP_START)) { expansionFormStack.pop(); if (expansionFormStack.length == 0) return exp; } else { this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); return null; } } if (this._peek.type === TokenType.EXPANSION_FORM_END) { if (lastOnStack(expansionFormStack, TokenType.EXPANSION_FORM_START)) { expansionFormStack.pop(); } else { this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); return null; } } if (this._peek.type === TokenType.EOF) { this._errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`)); return null; } exp.push(this._advance()); } } _consumeText(token) { let text = token.parts[0]; if (text.length > 0 && text[0] == '\n') { const parent = this._getParentElement(); if (parent != null && parent.children.length == 0 && this.getTagDefinition(parent.name).ignoreFirstLf) { text = text.substring(1); } } if (text.length > 0) { this._addToParent(new Text$3(text, token.sourceSpan)); } } _closeVoidElement() { const el = this._getParentElement(); if (el && this.getTagDefinition(el.name).isVoid) { this._elementStack.pop(); } } _consumeStartTag(startTagToken) { const prefix = startTagToken.parts[0]; const name = startTagToken.parts[1]; const attrs = []; while (this._peek.type === TokenType.ATTR_NAME) { attrs.push(this._consumeAttr(this._advance())); } const fullName = this._getElementFullName(prefix, name, this._getParentElement()); let selfClosing = false; // Note: There could have been a tokenizer error // so that we don't get a token for the end tag... if (this._peek.type === TokenType.TAG_OPEN_END_VOID) { this._advance(); selfClosing = true; const tagDef = this.getTagDefinition(fullName); if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) { this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, `Only void and foreign elements can be self closed "${startTagToken.parts[1]}"`)); } } else if (this._peek.type === TokenType.TAG_OPEN_END) { this._advance(); selfClosing = false; } const end = this._peek.sourceSpan.start; const span = new ParseSourceSpan(startTagToken.sourceSpan.start, end); const el = new Element$1(fullName, attrs, [], span, span, undefined); this._pushElement(el); if (selfClosing) { this._popElement(fullName); el.endSourceSpan = span; } } _pushElement(el) { const parentEl = this._getParentElement(); if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) { this._elementStack.pop(); } this._addToParent(el); this._elementStack.push(el); } _consumeEndTag(endTagToken) { const fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement()); if (this._getParentElement()) { this._getParentElement().endSourceSpan = endTagToken.sourceSpan; } if (this.getTagDefinition(fullName).isVoid) { this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, `Void elements do not have end tags "${endTagToken.parts[1]}"`)); } else if (!this._popElement(fullName)) { const errMsg = `Unexpected closing tag "${fullName}". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`; this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg)); } } _popElement(fullName) { for (let stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) { const el = this._elementStack[stackIndex]; if (el.name == fullName) { this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex); return true; } if (!this.getTagDefinition(el.name).closedByParent) { return false; } } return false; } _consumeAttr(attrName) { const fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]); let end = attrName.sourceSpan.end; let value = ''; let valueSpan = undefined; if (this._peek.type === TokenType.ATTR_QUOTE) { this._advance(); } if (this._peek.type === TokenType.ATTR_VALUE) { const valueToken = this._advance(); value = valueToken.parts[0]; end = valueToken.sourceSpan.end; valueSpan = valueToken.sourceSpan; } if (this._peek.type === TokenType.ATTR_QUOTE) { const quoteToken = this._advance(); end = quoteToken.sourceSpan.end; } return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan); } _getParentElement() { return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null; } /** * Returns the parent in the DOM and the container. * * `` elements are skipped as they are not rendered as DOM element. */ _getParentElementSkippingContainers() { let container = null; for (let i = this._elementStack.length - 1; i >= 0; i--) { if (!isNgContainer(this._elementStack[i].name)) { return { parent: this._elementStack[i], container }; } container = this._elementStack[i]; } return { parent: null, container }; } _addToParent(node) { const parent = this._getParentElement(); if (parent != null) { parent.children.push(node); } else { this._rootNodes.push(node); } } /** * Insert a node between the parent and the container. * When no container is given, the node is appended as a child of the parent. * Also updates the element stack accordingly. * * @internal */ _insertBeforeContainer(parent, container, node) { if (!container) { this._addToParent(node); this._elementStack.push(node); } else { if (parent) { // replace the container with the new node in the children const index = parent.children.indexOf(container); parent.children[index] = node; } else { this._rootNodes.push(node); } node.children.push(container); this._elementStack.splice(this._elementStack.indexOf(container), 0, node); } } _getElementFullName(prefix, localName, parentElement) { if (prefix === '') { prefix = this.getTagDefinition(localName).implicitNamespacePrefix || ''; if (prefix === '' && parentElement != null) { prefix = getNsPrefix(parentElement.name); } } return mergeNsAndName(prefix, localName); } } function lastOnStack(stack, element) { return stack.length > 0 && stack[stack.length - 1] === element; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ class HtmlParser extends Parser { constructor() { super(getHtmlTagDefinition); } parse(source, url, options) { return super.parse(source, url, options); } } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces'; const SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']); // Equivalent to \s with \u00a0 (non-breaking space) excluded. // Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp const WS_CHARS = ' \f\n\r\t\v\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff'; const NO_WS_REGEXP = new RegExp(`[^${WS_CHARS}]`); const WS_REPLACE_REGEXP = new RegExp(`[${WS_CHARS}]{2,}`, 'g'); function hasPreserveWhitespacesAttr(attrs) { return attrs.some((attr) => attr.name === PRESERVE_WS_ATTR_NAME); } /** * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see: * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32 * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character * and later on replaced by a space. We are re-implementing the same idea here. */ function replaceNgsp(value) { // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' '); } /** * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules: * - consider spaces, tabs and new lines as whitespace characters; * - drop text nodes consisting of whitespace characters only; * - for all other text nodes replace consecutive whitespace characters with one space; * - convert &ngsp; pseudo-entity to a single space; * * Removal and trimming of whitespaces have positive performance impact (less code to generate * while compiling templates, faster view creation). At the same time it can be "destructive" * in some cases (whitespaces can influence layout). Because of the potential of breaking layout * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for * whitespace removal. The default option for whitespace removal will be revisited in Angular 6 * and might be changed to "on" by default. */ class WhitespaceVisitor { visitElement(element, context) { if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) { // don't descent into elements where we need to preserve whitespaces // but still visit all attributes to eliminate one used as a market to preserve WS return new Element$1(element.name, visitAll$1(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); } return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n); } visitAttribute(attribute, context) { return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null; } visitText(text, context) { const isNotBlank = text.value.match(NO_WS_REGEXP); if (isNotBlank) { return new Text$3(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan, text.i18n); } return null; } visitComment(comment, context) { return comment; } visitExpansion(expansion, context) { return expansion; } visitExpansionCase(expansionCase, context) { return expansionCase; } } function removeWhitespaces(htmlAstWithErrors) { return new ParseTreeResult(visitAll$1(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ // http://cldr.unicode.org/index/cldr-spec/plural-rules const PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other']; /** * Expands special forms into elements. * * For example, * * ``` * { messages.length, plural, * =0 {zero} * =1 {one} * other {more than one} * } * ``` * * will be expanded into * * ``` * * zero * one * more than one * * ``` */ function expandNodes(nodes) { const expander = new _Expander(); return new ExpansionResult(visitAll$1(expander, nodes), expander.isExpanded, expander.errors); } class ExpansionResult { constructor(nodes, expanded, errors) { this.nodes = nodes; this.expanded = expanded; this.errors = errors; } } class ExpansionError extends ParseError { constructor(span, errorMsg) { super(span, errorMsg); } } /** * Expand expansion forms (plural, select) to directives * * @internal */ class _Expander { constructor() { this.isExpanded = false; this.errors = []; } visitElement(element, context) { return new Element$1(element.name, element.attrs, visitAll$1(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan); } visitAttribute(attribute, context) { return attribute; } visitText(text, context) { return text; } visitComment(comment, context) { return comment; } visitExpansion(icu, context) { this.isExpanded = true; return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) : _expandDefaultForm(icu, this.errors); } visitExpansionCase(icuCase, context) { throw new Error('Should not be reached'); } } // Plural forms are expanded to `NgPlural` and `NgPluralCase`s function _expandPluralForm(ast, errors) { const children = ast.cases.map(c => { if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\d+$/)) { errors.push(new ExpansionError(c.valueSourceSpan, `Plural cases should be "=" or one of ${PLURAL_CASES.join(", ")}`)); } const expansionResult = expandNodes(c.expression); errors.push(...expansionResult.errors); return new Element$1(`ng-template`, [new Attribute('ngPluralCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); }); const switchAttr = new Attribute('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan); return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); } // ICU messages (excluding plural form) are expanded to `NgSwitch` and `NgSwitchCase`s function _expandDefaultForm(ast, errors) { const children = ast.cases.map(c => { const expansionResult = expandNodes(c.expression); errors.push(...expansionResult.errors); if (c.value === 'other') { // other is the default case when no values match return new Element$1(`ng-template`, [new Attribute('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); } return new Element$1(`ng-template`, [new Attribute('ngSwitchCase', `${c.value}`, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan); }); const switchAttr = new Attribute('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan); return new Element$1('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * A segment of text within the template. */ class TextAst { constructor(value, ngContentIndex, sourceSpan) { this.value = value; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitText(this, context); } } /** * A bound expression within the text of a template. */ class BoundTextAst { constructor(value, ngContentIndex, sourceSpan) { this.value = value; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitBoundText(this, context); } } /** * A plain attribute on an element. */ class AttrAst { constructor(name, value, sourceSpan) { this.name = name; this.value = value; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitAttr(this, context); } } const BoundPropertyMapping = { [4 /* Animation */]: 4 /* Animation */, [1 /* Attribute */]: 1 /* Attribute */, [2 /* Class */]: 2 /* Class */, [0 /* Property */]: 0 /* Property */, [3 /* Style */]: 3 /* Style */, }; /** * A binding for an element property (e.g. `[property]="expression"`) or an animation trigger (e.g. * `[@trigger]="stateExp"`) */ class BoundElementPropertyAst { constructor(name, type, securityContext, value, unit, sourceSpan) { this.name = name; this.type = type; this.securityContext = securityContext; this.value = value; this.unit = unit; this.sourceSpan = sourceSpan; this.isAnimation = this.type === 4 /* Animation */; } static fromBoundProperty(prop) { const type = BoundPropertyMapping[prop.type]; return new BoundElementPropertyAst(prop.name, type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan); } visit(visitor, context) { return visitor.visitElementProperty(this, context); } } /** * A binding for an element event (e.g. `(event)="handler()"`) or an animation trigger event (e.g. * `(@trigger.phase)="callback($event)"`). */ class BoundEventAst { constructor(name, target, phase, handler, sourceSpan, handlerSpan) { this.name = name; this.target = target; this.phase = phase; this.handler = handler; this.sourceSpan = sourceSpan; this.handlerSpan = handlerSpan; this.fullName = BoundEventAst.calcFullName(this.name, this.target, this.phase); this.isAnimation = !!this.phase; } static calcFullName(name, target, phase) { if (target) { return `${target}:${name}`; } if (phase) { return `@${name}.${phase}`; } return name; } static fromParsedEvent(event) { const target = event.type === 0 /* Regular */ ? event.targetOrPhase : null; const phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null; return new BoundEventAst(event.name, target, phase, event.handler, event.sourceSpan, event.handlerSpan); } visit(visitor, context) { return visitor.visitEvent(this, context); } } /** * A reference declaration on an element (e.g. `let someName="expression"`). */ class ReferenceAst { constructor(name, value, originalValue, sourceSpan) { this.name = name; this.value = value; this.originalValue = originalValue; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitReference(this, context); } } /** * A variable declaration on a (e.g. `var-someName="someLocalName"`). */ class VariableAst { constructor(name, value, sourceSpan) { this.name = name; this.value = value; this.sourceSpan = sourceSpan; } static fromParsedVariable(v) { return new VariableAst(v.name, v.value, v.sourceSpan); } visit(visitor, context) { return visitor.visitVariable(this, context); } } /** * An element declaration in a template. */ class ElementAst { constructor(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) { this.name = name; this.attrs = attrs; this.inputs = inputs; this.outputs = outputs; this.references = references; this.directives = directives; this.providers = providers; this.hasViewContainer = hasViewContainer; this.queryMatches = queryMatches; this.children = children; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; this.endSourceSpan = endSourceSpan; } visit(visitor, context) { return visitor.visitElement(this, context); } } /** * A `` element included in an Angular template. */ class EmbeddedTemplateAst { constructor(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) { this.attrs = attrs; this.outputs = outputs; this.references = references; this.variables = variables; this.directives = directives; this.providers = providers; this.hasViewContainer = hasViewContainer; this.queryMatches = queryMatches; this.children = children; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitEmbeddedTemplate(this, context); } } /** * A directive property with a bound value (e.g. `*ngIf="condition"). */ class BoundDirectivePropertyAst { constructor(directiveName, templateName, value, sourceSpan) { this.directiveName = directiveName; this.templateName = templateName; this.value = value; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitDirectiveProperty(this, context); } } /** * A directive declared on an element. */ class DirectiveAst { constructor(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) { this.directive = directive; this.inputs = inputs; this.hostProperties = hostProperties; this.hostEvents = hostEvents; this.contentQueryStartId = contentQueryStartId; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitDirective(this, context); } } /** * A provider declared on an element */ class ProviderAst { constructor(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan, isModule) { this.token = token; this.multiProvider = multiProvider; this.eager = eager; this.providers = providers; this.providerType = providerType; this.lifecycleHooks = lifecycleHooks; this.sourceSpan = sourceSpan; this.isModule = isModule; } visit(visitor, context) { // No visit method in the visitor for now... return null; } } var ProviderAstType; (function (ProviderAstType) { ProviderAstType[ProviderAstType["PublicService"] = 0] = "PublicService"; ProviderAstType[ProviderAstType["PrivateService"] = 1] = "PrivateService"; ProviderAstType[ProviderAstType["Component"] = 2] = "Component"; ProviderAstType[ProviderAstType["Directive"] = 3] = "Directive"; ProviderAstType[ProviderAstType["Builtin"] = 4] = "Builtin"; })(ProviderAstType || (ProviderAstType = {})); /** * Position where content is to be projected (instance of `` in a template). */ class NgContentAst { constructor(index, ngContentIndex, sourceSpan) { this.index = index; this.ngContentIndex = ngContentIndex; this.sourceSpan = sourceSpan; } visit(visitor, context) { return visitor.visitNgContent(this, context); } } /** * A visitor that accepts each node but doesn't do anything. It is intended to be used * as the base class for a visitor that is only interested in a subset of the node types. */ class NullTemplateVisitor { visitNgContent(ast, context) { } visitEmbeddedTemplate(ast, context) { } visitElement(ast, context) { } visitReference(ast, context) { } visitVariable(ast, context) { } visitEvent(ast, context) { } visitElementProperty(ast, context) { } visitAttr(ast, context) { } visitBoundText(ast, context) { } visitText(ast, context) { } visitDirective(ast, context) { } visitDirectiveProperty(ast, context) { } } /** * Base class that can be used to build a visitor that visits each node * in an template ast recursively. */ class RecursiveTemplateAstVisitor extends NullTemplateVisitor { constructor() { super(); } // Nodes with children visitEmbeddedTemplate(ast, context) { return this.visitChildren(context, visit => { visit(ast.attrs); visit(ast.references); visit(ast.variables); visit(ast.directives); visit(ast.providers); visit(ast.children); }); } visitElement(ast, context) { return this.visitChildren(context, visit => { visit(ast.attrs); visit(ast.inputs); visit(ast.outputs); visit(ast.references); visit(ast.directives); visit(ast.providers); visit(ast.children); }); } visitDirective(ast, context) { return this.visitChildren(context, visit => { visit(ast.inputs); visit(ast.hostProperties); visit(ast.hostEvents); }); } visitChildren(context, cb) { let results = []; let t = this; function visit(children) { if (children && children.length) results.push(templateVisitAll(t, children, context)); } cb(visit); return Array.prototype.concat.apply([], results); } } /** * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}. */ function templateVisitAll(visitor, asts, context = null) { const result = []; const visit = visitor.visit ? (ast) => visitor.visit(ast, context) || ast.visit(visitor, context) : (ast) => ast.visit(visitor, context); asts.forEach(ast => { const astResult = visit(ast); if (astResult) { result.push(astResult); } }); return result; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ class ProviderError extends ParseError { constructor(message, span) { super(span, message); } } class ProviderViewContext { constructor(reflector, component) { this.reflector = reflector; this.component = component; this.errors = []; this.viewQueries = _getViewQueries(component); this.viewProviders = new Map(); component.viewProviders.forEach((provider) => { if (this.viewProviders.get(tokenReference(provider.token)) == null) { this.viewProviders.set(tokenReference(provider.token), true); } }); } } class ProviderElementContext { constructor(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) { this.viewContext = viewContext; this._parent = _parent; this._isViewRoot = _isViewRoot; this._directiveAsts = _directiveAsts; this._sourceSpan = _sourceSpan; this._transformedProviders = new Map(); this._seenProviders = new Map(); this._queriedTokens = new Map(); this.transformedHasViewContainer = false; this._attrs = {}; attrs.forEach((attrAst) => this._attrs[attrAst.name] = attrAst.value); const directivesMeta = _directiveAsts.map(directiveAst => directiveAst.directive); this._allProviders = _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors); this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta); Array.from(this._allProviders.values()).forEach((provider) => { this._addQueryReadsTo(provider.token, provider.token, this._queriedTokens); }); if (isTemplate) { const templateRefId = createTokenForExternalReference(this.viewContext.reflector, Identifiers.TemplateRef); this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens); } refs.forEach((refAst) => { let defaultQueryValue = refAst.value || createTokenForExternalReference(this.viewContext.reflector, Identifiers.ElementRef); this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, this._queriedTokens); }); if (this._queriedTokens.get(this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef))) { this.transformedHasViewContainer = true; } // create the providers that we know are eager first Array.from(this._allProviders.values()).forEach((provider) => { const eager = provider.eager || this._queriedTokens.get(tokenReference(provider.token)); if (eager) { this._getOrCreateLocalProvider(provider.providerType, provider.token, true); } }); } afterElement() { // collect lazy providers Array.from(this._allProviders.values()).forEach((provider) => { this._getOrCreateLocalProvider(provider.providerType, provider.token, false); }); } get transformProviders() { // Note: Maps keep their insertion order. const lazyProviders = []; const eagerProviders = []; this._transformedProviders.forEach(provider => { if (provider.eager) { eagerProviders.push(provider); } else { lazyProviders.push(provider); } }); return lazyProviders.concat(eagerProviders); } get transformedDirectiveAsts() { const sortedProviderTypes = this.transformProviders.map(provider => provider.token.identifier); const sortedDirectives = this._directiveAsts.slice(); sortedDirectives.sort((dir1, dir2) => sortedProviderTypes.indexOf(dir1.directive.type) - sortedProviderTypes.indexOf(dir2.directive.type)); return sortedDirectives; } get queryMatches() { const allMatches = []; this._queriedTokens.forEach((matches) => { allMatches.push(...matches); }); return allMatches; } _addQueryReadsTo(token, defaultValue, queryReadTokens) { this._getQueriesFor(token).forEach((query) => { const queryValue = query.meta.read || defaultValue; const tokenRef = tokenReference(queryValue); let queryMatches = queryReadTokens.get(tokenRef); if (!queryMatches) { queryMatches = []; queryReadTokens.set(tokenRef, queryMatches); } queryMatches.push({ queryId: query.queryId, value: queryValue }); }); } _getQueriesFor(token) { const result = []; let currentEl = this; let distance = 0; let queries; while (currentEl !== null) { queries = currentEl._contentQueries.get(tokenReference(token)); if (queries) { result.push(...queries.filter((query) => query.meta.descendants || distance <= 1)); } if (currentEl._directiveAsts.length > 0) { distance++; } currentEl = currentEl._parent; } queries = this.viewContext.viewQueries.get(tokenReference(token)); if (queries) { result.push(...queries); } return result; } _getOrCreateLocalProvider(requestingProviderType, token, eager) { const resolvedProvider = this._allProviders.get(tokenReference(token)); if (!resolvedProvider || ((requestingProviderType === ProviderAstType.Directive || requestingProviderType === ProviderAstType.PublicService) && resolvedProvider.providerType === ProviderAstType.PrivateService) || ((requestingProviderType === ProviderAstType.PrivateService || requestingProviderType === ProviderAstType.PublicService) && resolvedProvider.providerType === ProviderAstType.Builtin)) { return null; } let transformedProviderAst = this._transformedProviders.get(tokenReference(token)); if (transformedProviderAst) { return transformedProviderAst; } if (this._seenProviders.get(tokenReference(token)) != null) { this.viewContext.errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, this._sourceSpan)); return null; } this._seenProviders.set(tokenReference(token), true); const transformedProviders = resolvedProvider.providers.map((provider) => { let transformedUseValue = provider.useValue; let transformedUseExisting = provider.useExisting; let transformedDeps = undefined; if (provider.useExisting != null) { const existingDiDep = this._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager); if (existingDiDep.token != null) { transformedUseExisting = existingDiDep.token; } else { transformedUseExisting = null; transformedUseValue = existingDiDep.value; } } else if (provider.useFactory) { const deps = provider.deps || provider.useFactory.diDeps; transformedDeps = deps.map((dep) => this._getDependency(resolvedProvider.providerType, dep, eager)); } else if (provider.useClass) { const deps = provider.deps || provider.useClass.diDeps; transformedDeps = deps.map((dep) => this._getDependency(resolvedProvider.providerType, dep, eager)); } return _transformProvider(provider, { useExisting: transformedUseExisting, useValue: transformedUseValue, deps: transformedDeps }); }); transformedProviderAst = _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); this._transformedProviders.set(tokenReference(token), transformedProviderAst); return transformedProviderAst; } _getLocalDependency(requestingProviderType, dep, eager = false) { if (dep.isAttribute) { const attrValue = this._attrs[dep.token.value]; return { isValue: true, value: attrValue == null ? null : attrValue }; } if (dep.token != null) { // access builtints if ((requestingProviderType === ProviderAstType.Directive || requestingProviderType === ProviderAstType.Component)) { if (tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.Renderer) || tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.ElementRef) || tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.ChangeDetectorRef) || tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.TemplateRef)) { return dep; } if (tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) { this.transformedHasViewContainer = true; } } // access the injector if (tokenReference(dep.token) === this.viewContext.reflector.resolveExternalReference(Identifiers.Injector)) { return dep; } // access providers if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) { return dep; } } return null; } _getDependency(requestingProviderType, dep, eager = false) { let currElement = this; let currEager = eager; let result = null; if (!dep.isSkipSelf) { result = this._getLocalDependency(requestingProviderType, dep, eager); } if (dep.isSelf) { if (!result && dep.isOptional) { result = { isValue: true, value: null }; } } else { // check parent elements while (!result && currElement._parent) { const prevElement = currElement; currElement = currElement._parent; if (prevElement._isViewRoot) { currEager = false; } result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager); } // check @Host restriction if (!result) { if (!dep.isHost || this.viewContext.component.isHost || this.viewContext.component.type.reference === tokenReference(dep.token) || this.viewContext.viewProviders.get(tokenReference(dep.token)) != null) { result = dep; } else { result = dep.isOptional ? { isValue: true, value: null } : null; } } } if (!result) { this.viewContext.errors.push(new ProviderError(`No provider for ${tokenName(dep.token)}`, this._sourceSpan)); } return result; } } class NgModuleProviderAnalyzer { constructor(reflector, ngModule, extraProviders, sourceSpan) { this.reflector = reflector; this._transformedProviders = new Map(); this._seenProviders = new Map(); this._errors = []; this._allProviders = new Map(); ngModule.transitiveModule.modules.forEach((ngModuleType) => { const ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType }; _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, this._errors, this._allProviders, /* isModule */ true); }); _resolveProviders(ngModule.transitiveModule.providers.map(entry => entry.provider).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders, /* isModule */ false); } parse() { Array.from(this._allProviders.values()).forEach((provider) => { this._getOrCreateLocalProvider(provider.token, provider.eager); }); if (this._errors.length > 0) { const errorString = this._errors.join('\n'); throw new Error(`Provider parse errors:\n${errorString}`); } // Note: Maps keep their insertion order. const lazyProviders = []; const eagerProviders = []; this._transformedProviders.forEach(provider => { if (provider.eager) { eagerProviders.push(provider); } else { lazyProviders.push(provider); } }); return lazyProviders.concat(eagerProviders); } _getOrCreateLocalProvider(token, eager) { const resolvedProvider = this._allProviders.get(tokenReference(token)); if (!resolvedProvider) { return null; } let transformedProviderAst = this._transformedProviders.get(tokenReference(token)); if (transformedProviderAst) { return transformedProviderAst; } if (this._seenProviders.get(tokenReference(token)) != null) { this._errors.push(new ProviderError(`Cannot instantiate cyclic dependency! ${tokenName(token)}`, resolvedProvider.sourceSpan)); return null; } this._seenProviders.set(tokenReference(token), true); const transformedProviders = resolvedProvider.providers.map((provider) => { let transformedUseValue = provider.useValue; let transformedUseExisting = provider.useExisting; let transformedDeps = undefined; if (provider.useExisting != null) { const existingDiDep = this._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan); if (existingDiDep.token != null) { transformedUseExisting = existingDiDep.token; } else { transformedUseExisting = null; transformedUseValue = existingDiDep.value; } } else if (provider.useFactory) { const deps = provider.deps || provider.useFactory.diDeps; transformedDeps = deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan)); } else if (provider.useClass) { const deps = provider.deps || provider.useClass.diDeps; transformedDeps = deps.map((dep) => this._getDependency(dep, eager, resolvedProvider.sourceSpan)); } return _transformProvider(provider, { useExisting: transformedUseExisting, useValue: transformedUseValue, deps: transformedDeps }); }); transformedProviderAst = _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders }); this._transformedProviders.set(tokenReference(token), transformedProviderAst); return transformedProviderAst; } _getDependency(dep, eager = false, requestorSourceSpan) { let foundLocal = false; if (!dep.isSkipSelf && dep.token != null) { // access the injector if (tokenReference(dep.token) === this.reflector.resolveExternalReference(Identifiers.Injector) || tokenReference(dep.token) === this.reflector.resolveExternalReference(Identifiers.ComponentFactoryResolver)) { foundLocal = true; // access providers } else if (this._getOrCreateLocalProvider(dep.token, eager) != null) { foundLocal = true; } } return dep; } } function _transformProvider(provider, { useExisting, useValue, deps }) { return { token: provider.token, useClass: provider.useClass, useExisting: useExisting, useFactory: provider.useFactory, useValue: useValue, deps: deps, multi: provider.multi }; } function _transformProviderAst(provider, { eager, providers }) { return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan, provider.isModule); } function _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) { const providersByToken = new Map(); directives.forEach((directive) => { const dirProvider = { token: { identifier: directive.type }, useClass: directive.type }; _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken, /* isModule */ false); }); // Note: directives need to be able to overwrite providers of a component! const directivesWithComponentFirst = directives.filter(dir => dir.isComponent).concat(directives.filter(dir => !dir.isComponent)); directivesWithComponentFirst.forEach((directive) => { _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken, /* isModule */ false); }); return providersByToken; } function _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken, isModule) { providers.forEach((provider) => { let resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token)); if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) { targetErrors.push(new ProviderError(`Mixing multi and non multi provider is not possible for token ${tokenName(resolvedProvider.token)}`, sourceSpan)); } if (!resolvedProvider) { const lifecycleHooks = provider.token.identifier && provider.token.identifier.lifecycleHooks ? provider.token.identifier.lifecycleHooks : []; const isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory); resolvedProvider = new ProviderAst(provider.token, !!provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan, isModule); targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider); } else { if (!provider.multi) { resolvedProvider.providers.length = 0; } resolvedProvider.providers.push(provider); } }); } function _getViewQueries(component) { // Note: queries start with id 1 so we can use the number in a Bloom filter! let viewQueryId = 1; const viewQueries = new Map(); if (component.viewQueries) { component.viewQueries.forEach((query) => _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ })); } return viewQueries; } function _getContentQueries(contentQueryStartId, directives) { let contentQueryId = contentQueryStartId; const contentQueries = new Map(); directives.forEach((directive, directiveIndex) => { if (directive.queries) { directive.queries.forEach((query) => _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ })); } }); return contentQueries; } function _addQueryToTokenMap(map, query) { query.meta.selectors.forEach((token) => { let entry = map.get(tokenReference(token)); if (!entry) { entry = []; map.set(tokenReference(token), entry); } entry.push(query); }); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ class StyleWithImports { constructor(style, styleUrls) { this.style = style; this.styleUrls = styleUrls; } } function isStyleUrlResolvable(url) { if (url == null || url.length === 0 || url[0] == '/') return false; const schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP); return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset'; } /** * Rewrites stylesheets by resolving and removing the @import urls that * are either relative or don't have a `package:` scheme */ function extractStyleUrls(resolver, baseUrl, cssText) { const foundUrls = []; const modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '') .replace(CSS_IMPORT_REGEXP, (...m) => { const url = m[1] || m[2]; if (!isStyleUrlResolvable(url)) { // Do not attempt to resolve non-package absolute URLs with URI // scheme return m[0]; } foundUrls.push(resolver.resolve(baseUrl, url)); return ''; }); return new StyleWithImports(modifiedCssText, foundUrls); } const CSS_IMPORT_REGEXP = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g; const CSS_STRIPPABLE_COMMENT_REGEXP = /\/\*(?!#\s*(?:sourceURL|sourceMappingURL)=)[\s\S]+?\*\//g; const URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/; /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const PROPERTY_PARTS_SEPARATOR = '.'; const ATTRIBUTE_PREFIX = 'attr'; const CLASS_PREFIX = 'class'; const STYLE_PREFIX = 'style'; const ANIMATE_PROP_PREFIX = 'animate-'; /** * Parses bindings in templates and in the directive host area. */ class BindingParser { constructor(_exprParser, _interpolationConfig, _schemaRegistry, pipes, errors) { this._exprParser = _exprParser; this._interpolationConfig = _interpolationConfig; this._schemaRegistry = _schemaRegistry; this.errors = errors; this.pipesByName = null; this._usedPipes = new Map(); // When the `pipes` parameter is `null`, do not check for used pipes // This is used in IVY when we might not know the available pipes at compile time if (pipes) { const pipesByName = new Map(); pipes.forEach(pipe => pipesByName.set(pipe.name, pipe)); this.pipesByName = pipesByName; } } get interpolationConfig() { return this._interpolationConfig; } getUsedPipes() { return Array.from(this._usedPipes.values()); } createBoundHostProperties(dirMeta, sourceSpan) { if (dirMeta.hostProperties) { const boundProps = []; Object.keys(dirMeta.hostProperties).forEach(propName => { const expression = dirMeta.hostProperties[propName]; if (typeof expression === 'string') { this.parsePropertyBinding(propName, expression, true, sourceSpan, sourceSpan.start.offset, undefined, [], boundProps); } else { this._reportError(`Value of the host property binding "${propName}" needs to be a string representing an expression but got "${expression}" (${typeof expression})`, sourceSpan); } }); return boundProps; } return null; } createDirectiveHostPropertyAsts(dirMeta, elementSelector, sourceSpan) { const boundProps = this.createBoundHostProperties(dirMeta, sourceSpan); return boundProps && boundProps.map((prop) => this.createBoundElementProperty(elementSelector, prop)); } createDirectiveHostEventAsts(dirMeta, sourceSpan) { if (dirMeta.hostListeners) { const targetEvents = []; Object.keys(dirMeta.hostListeners).forEach(propName => { const expression = dirMeta.hostListeners[propName]; if (typeof expression === 'string') { // TODO: pass a more accurate handlerSpan for this event. this.parseEvent(propName, expression, sourceSpan, sourceSpan, [], targetEvents); } else { this._reportError(`Value of the host listener "${propName}" needs to be a string representing an expression but got "${expression}" (${typeof expression})`, sourceSpan); } }); return targetEvents; } return null; } parseInterpolation(value, sourceSpan) { const sourceInfo = sourceSpan.start.toString(); try { const ast = this._exprParser.parseInterpolation(value, sourceInfo, sourceSpan.start.offset, this._interpolationConfig); if (ast) this._reportExpressionParserErrors(ast.errors, sourceSpan); this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError(`${e}`, sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, sourceSpan.start.offset); } } // Parse an inline template binding. ie `` parseInlineTemplateBinding(tplKey, tplValue, sourceSpan, absoluteOffset, targetMatchableAttrs, targetProps, targetVars) { const bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan); for (let i = 0; i < bindings.length; i++) { const binding = bindings[i]; if (binding.keyIsVar) { targetVars.push(new ParsedVariable(binding.key, binding.name, sourceSpan)); } else if (binding.expression) { this._parsePropertyAst(binding.key, binding.expression, sourceSpan, undefined, targetMatchableAttrs, targetProps); } else { targetMatchableAttrs.push([binding.key, '']); this.parseLiteralAttr(binding.key, null, sourceSpan, absoluteOffset, undefined, targetMatchableAttrs, targetProps); } } } _parseTemplateBindings(tplKey, tplValue, sourceSpan) { const sourceInfo = sourceSpan.start.toString(); try { const bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceInfo, sourceSpan.start.offset); this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan); bindingsResult.templateBindings.forEach((binding) => { if (binding.expression) { this._checkPipes(binding.expression, sourceSpan); } }); bindingsResult.warnings.forEach((warning) => { this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); }); return bindingsResult.templateBindings; } catch (e) { this._reportError(`${e}`, sourceSpan); return []; } } parseLiteralAttr(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { if (isAnimationLabel(name)) { name = name.substring(1); if (value) { this._reportError(`Assigning animation triggers via @prop="exp" attributes with an expression is invalid.` + ` Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.`, sourceSpan, ParseErrorLevel.ERROR); } this._parseAnimation(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps); } else { targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, '', absoluteOffset), ParsedPropertyType.LITERAL_ATTR, sourceSpan, valueSpan)); } } parsePropertyBinding(name, expression, isHost, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { let isAnimationProp = false; if (name.startsWith(ANIMATE_PROP_PREFIX)) { isAnimationProp = true; name = name.substring(ANIMATE_PROP_PREFIX.length); } else if (isAnimationLabel(name)) { isAnimationProp = true; name = name.substring(1); } if (isAnimationProp) { this._parseAnimation(name, expression, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps); } else { this._parsePropertyAst(name, this._parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), sourceSpan, valueSpan, targetMatchableAttrs, targetProps); } } parsePropertyInterpolation(name, value, sourceSpan, valueSpan, targetMatchableAttrs, targetProps) { const expr = this.parseInterpolation(value, valueSpan || sourceSpan); if (expr) { this._parsePropertyAst(name, expr, sourceSpan, valueSpan, targetMatchableAttrs, targetProps); return true; } return false; } _parsePropertyAst(name, ast, sourceSpan, valueSpan, targetMatchableAttrs, targetProps) { targetMatchableAttrs.push([name, ast.source]); targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.DEFAULT, sourceSpan, valueSpan)); } _parseAnimation(name, expression, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps) { // This will occur when a @trigger is not paired with an expression. // For animations it is valid to not have an expression since */void // states will be applied by angular when the element is attached/detached const ast = this._parseBinding(expression || 'undefined', false, valueSpan || sourceSpan, absoluteOffset); targetMatchableAttrs.push([name, ast.source]); targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan, valueSpan)); } _parseBinding(value, isHostBinding, sourceSpan, absoluteOffset) { const sourceInfo = (sourceSpan && sourceSpan.start || '(unknown)').toString(); try { const ast = isHostBinding ? this._exprParser.parseSimpleBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig) : this._exprParser.parseBinding(value, sourceInfo, absoluteOffset, this._interpolationConfig); if (ast) this._reportExpressionParserErrors(ast.errors, sourceSpan); this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError(`${e}`, sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); } } createBoundElementProperty(elementSelector, boundProp, skipValidation = false, mapPropertyName = true) { if (boundProp.isAnimation) { return new BoundElementProperty(boundProp.name, 4 /* Animation */, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan, boundProp.valueSpan); } let unit = null; let bindingType = undefined; let boundPropertyName = null; const parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR); let securityContexts = undefined; // Check for special cases (prefix style, attr, class) if (parts.length > 1) { if (parts[0] == ATTRIBUTE_PREFIX) { boundPropertyName = parts[1]; if (!skipValidation) { this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true); } securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true); const nsSeparatorIdx = boundPropertyName.indexOf(':'); if (nsSeparatorIdx > -1) { const ns = boundPropertyName.substring(0, nsSeparatorIdx); const name = boundPropertyName.substring(nsSeparatorIdx + 1); boundPropertyName = mergeNsAndName(ns, name); } bindingType = 1 /* Attribute */; } else if (parts[0] == CLASS_PREFIX) { boundPropertyName = parts[1]; bindingType = 2 /* Class */; securityContexts = [SecurityContext.NONE]; } else if (parts[0] == STYLE_PREFIX) { unit = parts.length > 2 ? parts[2] : null; boundPropertyName = parts[1]; bindingType = 3 /* Style */; securityContexts = [SecurityContext.STYLE]; } } // If not a special case, use the full property name if (boundPropertyName === null) { const mappedPropName = this._schemaRegistry.getMappedPropName(boundProp.name); boundPropertyName = mapPropertyName ? mappedPropName : boundProp.name; securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, mappedPropName, false); bindingType = 0 /* Property */; if (!skipValidation) { this._validatePropertyOrAttributeName(mappedPropName, boundProp.sourceSpan, false); } } return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan, boundProp.valueSpan); } parseEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { if (isAnimationLabel(name)) { name = name.substr(1); this._parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents); } else { this._parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents); } } calcPossibleSecurityContexts(selector, propName, isAttribute) { const prop = this._schemaRegistry.getMappedPropName(propName); return calcPossibleSecurityContexts(this._schemaRegistry, selector, prop, isAttribute); } _parseAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents) { const matches = splitAtPeriod(name, [name, '']); const eventName = matches[0]; const phase = matches[1].toLowerCase(); if (phase) { switch (phase) { case 'start': case 'done': const ast = this._parseAction(expression, handlerSpan); targetEvents.push(new ParsedEvent(eventName, phase, 1 /* Animation */, ast, sourceSpan, handlerSpan)); break; default: this._reportError(`The provided animation output phase value "${phase}" for "@${eventName}" is not supported (use start or done)`, sourceSpan); break; } } else { this._reportError(`The animation trigger output event (@${eventName}) is missing its phase value name (start or done are currently supported)`, sourceSpan); } } _parseRegularEvent(name, expression, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents) { // long format: 'target: eventName' const [target, eventName] = splitAtColon(name, [null, name]); const ast = this._parseAction(expression, handlerSpan); targetMatchableAttrs.push([name, ast.source]); targetEvents.push(new ParsedEvent(eventName, target, 0 /* Regular */, ast, sourceSpan, handlerSpan)); // Don't detect directives for event names for now, // so don't add the event name to the matchableAttrs } _parseAction(value, sourceSpan) { const sourceInfo = (sourceSpan && sourceSpan.start || '(unknown').toString(); const absoluteOffset = (sourceSpan && sourceSpan.start) ? sourceSpan.start.offset : 0; try { const ast = this._exprParser.parseAction(value, sourceInfo, absoluteOffset, this._interpolationConfig); if (ast) { this._reportExpressionParserErrors(ast.errors, sourceSpan); } if (!ast || ast.ast instanceof EmptyExpr) { this._reportError(`Empty expressions are not allowed`, sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); } this._checkPipes(ast, sourceSpan); return ast; } catch (e) { this._reportError(`${e}`, sourceSpan); return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo, absoluteOffset); } } _reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) { this.errors.push(new ParseError(sourceSpan, message, level)); } _reportExpressionParserErrors(errors, sourceSpan) { for (const error of errors) { this._reportError(error.message, sourceSpan); } } // Make sure all the used pipes are known in `this.pipesByName` _checkPipes(ast, sourceSpan) { if (ast && this.pipesByName) { const collector = new PipeCollector(); ast.visit(collector); collector.pipes.forEach((ast, pipeName) => { const pipeMeta = this.pipesByName.get(pipeName); if (!pipeMeta) { this._reportError(`The pipe '${pipeName}' could not be found`, new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end))); } else { this._usedPipes.set(pipeName, pipeMeta); } }); } } /** * @param propName the name of the property / attribute * @param sourceSpan * @param isAttr true when binding to an attribute */ _validatePropertyOrAttributeName(propName, sourceSpan, isAttr) { const report = isAttr ? this._schemaRegistry.validateAttribute(propName) : this._schemaRegistry.validateProperty(propName); if (report.error) { this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR); } } } class PipeCollector extends RecursiveAstVisitor$1 { constructor() { super(...arguments); this.pipes = new Map(); } visitPipe(ast, context) { this.pipes.set(ast.name, ast); ast.exp.visit(this); this.visitAll(ast.args, context); return null; } } function isAnimationLabel(name) { return name[0] == '@'; } function calcPossibleSecurityContexts(registry, selector, propName, isAttribute) { const ctxs = []; CssSelector.parse(selector).forEach((selector) => { const elementNames = selector.element ? [selector.element] : registry.allKnownElementNames(); const notElementNames = new Set(selector.notSelectors.filter(selector => selector.isElementSelector()) .map((selector) => selector.element)); const possibleElementNames = elementNames.filter(elementName => !notElementNames.has(elementName)); ctxs.push(...possibleElementNames.map(elementName => registry.securityContext(elementName, propName, isAttribute))); }); return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort(); } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const NG_CONTENT_SELECT_ATTR = 'select'; const LINK_ELEMENT = 'link'; const LINK_STYLE_REL_ATTR = 'rel'; const LINK_STYLE_HREF_ATTR = 'href'; const LINK_STYLE_REL_VALUE = 'stylesheet'; const STYLE_ELEMENT = 'style'; const SCRIPT_ELEMENT = 'script'; const NG_NON_BINDABLE_ATTR = 'ngNonBindable'; const NG_PROJECT_AS = 'ngProjectAs'; function preparseElement(ast) { let selectAttr = null; let hrefAttr = null; let relAttr = null; let nonBindable = false; let projectAs = ''; ast.attrs.forEach(attr => { const lcAttrName = attr.name.toLowerCase(); if (lcAttrName == NG_CONTENT_SELECT_ATTR) { selectAttr = attr.value; } else if (lcAttrName == LINK_STYLE_HREF_ATTR) { hrefAttr = attr.value; } else if (lcAttrName == LINK_STYLE_REL_ATTR) { relAttr = attr.value; } else if (attr.name == NG_NON_BINDABLE_ATTR) { nonBindable = true; } else if (attr.name == NG_PROJECT_AS) { if (attr.value.length > 0) { projectAs = attr.value; } } }); selectAttr = normalizeNgContentSelect(selectAttr); const nodeName = ast.name.toLowerCase(); let type = PreparsedElementType.OTHER; if (isNgContent(nodeName)) { type = PreparsedElementType.NG_CONTENT; } else if (nodeName == STYLE_ELEMENT) { type = PreparsedElementType.STYLE; } else if (nodeName == SCRIPT_ELEMENT) { type = PreparsedElementType.SCRIPT; } else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) { type = PreparsedElementType.STYLESHEET; } return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs); } var PreparsedElementType; (function (PreparsedElementType) { PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT"; PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE"; PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET"; PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT"; PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER"; })(PreparsedElementType || (PreparsedElementType = {})); class PreparsedElement { constructor(type, selectAttr, hrefAttr, nonBindable, projectAs) { this.type = type; this.selectAttr = selectAttr; this.hrefAttr = hrefAttr; this.nonBindable = nonBindable; this.projectAs = projectAs; } } function normalizeNgContentSelect(selectAttr) { if (selectAttr === null || selectAttr.length === 0) { return '*'; } return selectAttr; } /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ const BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/; // Group 1 = "bind-" const KW_BIND_IDX = 1; // Group 2 = "let-" const KW_LET_IDX = 2; // Group 3 = "ref-/#" const KW_REF_IDX = 3; // Group 4 = "on-" const KW_ON_IDX = 4; // Group 5 = "bindon-" const KW_BINDON_IDX = 5; // Group 6 = "@" const KW_AT_IDX = 6; // Group 7 = the identifier after "bind-", "let-", "ref-/#", "on-", "bindon-" or "@" const IDENT_KW_IDX = 7; // Group 8 = identifier inside [()] const IDENT_BANANA_BOX_IDX = 8; // Group 9 = identifier inside [] const IDENT_PROPERTY_IDX = 9; // Group 10 = identifier inside () const IDENT_EVENT_IDX = 10; const TEMPLATE_ATTR_PREFIX = '*'; const CLASS_ATTR = 'class'; let _TEXT_CSS_SELECTOR; function TEXT_CSS_SELECTOR() { if (!_TEXT_CSS_SELECTOR) { _TEXT_CSS_SELECTOR = CssSelector.parse('*')[0]; } return _TEXT_CSS_SELECTOR; } class TemplateParseError extends ParseError { constructor(message, span, level) { super(span, message, level); } } class TemplateParseResult { constructor(templateAst, usedPipes, errors) { this.templateAst = templateAst; this.usedPipes = usedPipes; this.errors = errors; } } class TemplateParser { constructor(_config, _reflector, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) { this._config = _config; this._reflector = _reflector; this._exprParser = _exprParser; this._schemaRegistry = _schemaRegistry; this._htmlParser = _htmlParser; this._console = _console; this.transforms = transforms; } get expressionParser() { return this._exprParser; } parse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { const result = this.tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces); const warnings = result.errors.filter(error => error.level === ParseErrorLevel.WARNING); const errors = result.errors.filter(error => error.level === ParseErrorLevel.ERROR); if (warnings.length > 0) { this._console.warn(`Template parse warnings:\n${warnings.join('\n')}`); } if (errors.length > 0) { const errorString = errors.join('\n'); throw syntaxError(`Template parse errors:\n${errorString}`, errors); } return { template: result.templateAst, pipes: result.usedPipes }; } tryParse(component, template, directives, pipes, schemas, templateUrl, preserveWhitespaces) { let htmlParseResult = typeof template === 'string' ? this._htmlParser.parse(template, templateUrl, { tokenizeExpansionForms: true, interpolationConfig: this.getInterpolationConfig(component) }) : template; if (!preserveWhitespaces) { htmlParseResult = removeWhitespaces(htmlParseResult); } return this.tryParseHtml(this.expandHtml(htmlParseResult), component, directives, pipes, schemas); } tryParseHtml(htmlAstWithErrors, component, directives, pipes, schemas) { let result; const errors = htmlAstWithErrors.errors; const usedPipes = []; if (htmlAstWithErrors.rootNodes.length > 0) { const uniqDirectives = removeSummaryDuplicates(directives); const uniqPipes = removeSummaryDuplicates(pipes); const providerViewContext = new ProviderViewContext(this._reflector, component); let interpolationConfig = undefined; if (component.template && component.template.interpolation) { interpolationConfig = { start: component.template.interpolation[0], end: component.template.interpolation[1] }; } const bindingParser = new BindingParser(this._exprParser, interpolationConfig, this._schemaRegistry, uniqPipes, errors); const parseVisitor = new TemplateParseVisitor(this._reflector, this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors); result = visitAll$1(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT); errors.push(...providerViewContext.errors); usedPipes.push(...bindingParser.getUsedPipes()); } else { result = []; } this._assertNoReferenceDuplicationOnTemplate(result, errors); if (errors.length > 0) { return new TemplateParseResult(result, usedPipes, errors); } if (this.transforms) { this.transforms.forEach((transform) => { result = templateVisitAll(transform, result); }); } return new TemplateParseResult(result, usedPipes, errors); } expandHtml(htmlAstWithErrors, forced = false) { const errors = htmlAstWithErrors.errors; if (errors.length == 0 || forced) { // Transform ICU messages to angular directives const expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes); errors.push(...expandedHtmlAst.errors); htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors); } return htmlAstWithErrors; } getInterpolationConfig(component) { if (component.template) { return InterpolationConfig.fromArray(component.template.interpolation); } return undefined; } /** @internal */ _assertNoReferenceDuplicationOnTemplate(result, errors) { const existingReferences = []; result.filter(element => !!element.references) .forEach(element => element.references.forEach((reference) => { const name = reference.name; if (existingReferences.indexOf(name) < 0) { existingReferences.push(name); } else { const error = new TemplateParseError(`Reference "#${name}" is defined several times`, reference.sourceSpan, ParseErrorLevel.ERROR); errors.push(error); } })); } } class TemplateParseVisitor { constructor(reflector, config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) { this.reflector = reflector; this.config = config; this.providerViewContext = providerViewContext; this._bindingParser = _bindingParser; this._schemaRegistry = _schemaRegistry; this._schemas = _schemas; this._targetErrors = _targetErrors; this.selectorMatcher = new SelectorMatcher(); this.directivesIndex = new Map(); this.ngContentCount = 0; // Note: queries start with id 1 so we can use the number in a Bloom filter! this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1; directives.forEach((directive, index) => { const selector = CssSelector.parse(directive.selector); this.selectorMatcher.addSelectables(selector, directive); this.directivesIndex.set(directive, index); }); } visitExpansion(expansion, context) { return null; } visitExpansionCase(expansionCase, context) { return null; } visitText(text, parent) { const ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR()); const valueNoNgsp = replaceNgsp(text.value); const expr = this._bindingParser.parseInterpolation(valueNoNgsp, text.sourceSpan); return expr ? new BoundTextAst(expr, ngContentIndex, text.sourceSpan) : new TextAst(valueNoNgsp, ngContentIndex, text.sourceSpan); } visitAttribute(attribute, context) { return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan); } visitComment(comment, context) { return null; } visitElement(element, parent) { const queryStartIndex = this.contentQueryStartId; const elName = element.name; const preparsedElement = preparseElement(element); if (preparsedElement.type === PreparsedElementType.SCRIPT || preparsedElement.type === PreparsedElementType.STYLE) { // Skipping Obscurify ================================================ FILE: frontend/src/main.ts ================================================ import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; if (environment.production) { enableProdMode(); } document.addEventListener('DOMContentLoaded', () => { platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.error(err)); }); ================================================ FILE: frontend/src/manifest.webmanifest ================================================ { "name": "Obscurify Music", "short_name": "Obscurify", "start_url": "https://obscurifymusic.com/", "display": "standalone", "scope": "/#/", "icons": [ { "src": "assets/icons/icon-72x72.png", "sizes": "72x72", "type": "image/png", "purpose": "maskable any" }, { "src": "assets/icons/icon-144x144.png", "sizes": "144x144", "type": "image/png", "purpose": "maskable any" }, { "src": "assets/icons/icon-152x152.png", "sizes": "152x152", "type": "image/png", "purpose": "maskable any" }, { "src": "assets/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable any" }, { "src": "assets/icons/icon-384x384.png", "sizes": "384x384", "type": "image/png", "purpose": "maskable any" }, { "src": "assets/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable any" } ], "background_color": "#65d26e", "theme_color": "#65d26e" } ================================================ FILE: frontend/src/polyfills.ts ================================================ /** * 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. import 'intersection-observer'; /*************************************************************************************************** * APPLICATION IMPORTS */ ================================================ FILE: frontend/src/styles.scss ================================================ // Custom Theming for Angular Material // For more information: https://material.angular.io/guide/theming @import '~@angular/material/theming'; @import './app/scss/mixins'; @import 'variables'; // Plus imports for other components in your app. // Include the common styles for Angular Material. We include this here so that you only // have to load a single css file for Angular Material in your app. // Be sure that you only ever include this mixin once! @include mat-core(); // Define the palettes for your theme using the Material Design palettes available in palette.scss // (imported above). For each palette, you can optionally specify a default, lighter, and darker // hue. Available color palettes: https://material.io/design/color/ $dark-primary-text: #020d10; $light-primary-text: #FFF; $mat-black: ( 50: #efefef, 100: #d6d8d8, 200: #b7bfc1, 300: #97a6aa, 400: #7f9398, 500: #678087, 600: #5b7176, 700: #5b7176, 800: #4c5d61, 900: #2D3436, contrast: ( 50: $light-primary-text, 100: $light-primary-text, 200: $light-primary-text, 300: $light-primary-text, 400: $light-primary-text, 500: $light-primary-text, 600: $light-primary-text, 700: $light-primary-text, 800: $light-primary-text, 900: $light-primary-text, ) ); $mat-white: ( 50: #efefef, 100: #fff, 200: #fff, 300: #fff, 400: #fff, 500: #fff, 600: #fff, 700: #fff, 800: #fff, 900: #fff, contrast: ( 50: $light-primary-text, 100: $light-primary-text, 200: $light-primary-text, 300: $light-primary-text, 400: $light-primary-text, 500: $light-primary-text, 600: $light-primary-text, 700: $light-primary-text, 800: $light-primary-text, 900: $light-primary-text, ) ); $mat-green: ( 50: #e9f9ea, 100: #cbefcc, 200: #a9e5ac, 300: #86db8b, 400: #6dd173, 500: #55c85a, 600: #4bb850, 700: #3fa545, 800:#35933a, 900: #217328, contrast: ( 50: $dark-primary-text, 100: $dark-primary-text, 200: $dark-primary-text, 300: $dark-primary-text, 400: $dark-primary-text, 500: $dark-primary-text, 600: $dark-primary-text, 700: $dark-primary-text, 800: $dark-primary-text, 900: $dark-primary-text, A100: $dark-primary-text, A200: $dark-primary-text, A400: $dark-primary-text, A700: $dark-primary-text, ) ); $obscurify3-primary: mat-palette($mat-black, 900, 700, 500); $obscurify3-accent: mat-palette($mat-green, 200, 500, 100); // The warn palette is optional (defaults to red). $obscurify3-warn: mat-palette($mat-red); // Create the theme object (a Sass map containing all of the palettes). $obscurify3-theme: mat-light-theme($obscurify3-primary, $obscurify3-accent, $obscurify3-warn); $dark-primary: mat-palette($mat-white); $dark-accent: mat-palette($mat-white); $dark-warn: mat-palette($mat-red); $dark-foreground: #fff; $dark-theme: mat-dark-theme($dark-primary, $dark-accent, $dark-warn); // Define a custom typography config that overrides the font-family as well as the // `headlines` and `body-1` levels. $custom-typography: mat-typography-config( $font-family: $primary-font, $headline: mat-typography-level(32px, 48px, 700), $body-1: mat-typography-level(16px, 24px, 700) ); // Include theme styles for core and each component used in your app. // Alternatively, you can import and @include the theme mixins for each component // that you are using. @include mat-select-typography($custom-typography); @include angular-material-theme($obscurify3-theme); .dark-theme { @include angular-material-theme($dark-theme) } html, body { height: 100%; width: 100%; scroll-behavior: smooth;} body { margin: 0; font-family: $primary-font; font-size: 16px; font-weight: bold; -webkit-font-smoothing: antialiased} h1,h2,h3,h4,h5,p,li,ul { margin: 0; padding: 0; } button, a { font-size: inherit; } a { font-weight: normal; touch-action: manipulation; } $primary-font: 'Helvetica Neue', sans-serif; $secondary-font: -apple-system, BlinkMacSystemFont, 'Segoe UI'; .obscurity__rating__select { min-height: 500px; } .panel-success { color: $primary-color; } .panel-error { color: red; } .slate { padding: 8rem 1em; } .sticky_sentinel { position: absolute; left: 0; right: 0; /* needs dimensions */ } .sticky_sentinel--top { /* Adjust the height and top values based on your on your sticky top position. e.g. make the height bigger and adjust the top so observeHeaders()'s IntersectionObserver fires as soon as the bottom of the sentinel crosses the top of the intersection container. */ height: 40px; top: -24px; z-index: -1; } .sticky_sentinel--bottom { /* Height should match the top of the header when it's at the bottom of the intersection container. */ height: 40px; bottom: 0; z-index: -1; } .bottom-sheet__artist__nav { padding: 2em 1em !important; font-family: "Helvetica Neue", sans-serif; font-size: 1em; } html, body { height: 100%; } body { margin: 0; font-family: "Helvetica Neue", sans-serif; } button { font-family: "Helvetica Neue", sans-serif; cursor: pointer; } ================================================ FILE: frontend/src/test.ts ================================================ // 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); ================================================ FILE: frontend/tsconfig.app.json ================================================ { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/app", "types": [] }, "files": [ "src/main.ts", "src/polyfills.ts" ], "include": [ "src/**/*.d.ts" ], "exclude": [ "src/test.ts", "src/**/*.spec.ts" ] } ================================================ FILE: frontend/tsconfig.json ================================================ { "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "downlevelIteration": true, "experimentalDecorators": true, "module": "esnext", "moduleResolution": "node", "importHelpers": true, "target": "es2015", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2018", "dom" ] }, "angularCompilerOptions": { "fullTemplateTypeCheck": true, "strictInjectionParameters": true } } ================================================ FILE: frontend/tsconfig.spec.json ================================================ { "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": [ "jasmine", "node" ] }, "files": [ "src/test.ts", "src/polyfills.ts" ], "include": [ "src/**/*.spec.ts", "src/**/*.d.ts" ] } ================================================ FILE: frontend/tslint.json ================================================ { "extends": "tslint:recommended", "rules": { "array-type": false, "arrow-parens": false, "deprecation": { "severity": "warning" }, "component-class-suffix": true, "contextual-lifecycle": true, "directive-class-suffix": true, "directive-selector": [ true, "attribute", "app", "camelCase" ], "component-selector": [ true, "element", "app", "kebab-case" ], "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-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-conflicting-lifecycle": true, "no-host-metadata-property": true, "no-input-rename": true, "no-inputs-metadata-property": true, "no-output-native": true, "no-output-on-prefix": true, "no-output-rename": true, "no-outputs-metadata-property": true, "template-banana-in-box": true, "template-no-negated-async": true, "use-lifecycle-interface": true, "use-pipe-transform-interface": true }, "rulesDirectory": [ "codelyzer" ] } ================================================ FILE: generate_countries.js ================================================ //////////////////////////////////////////////////////////////////////////////// // // // Utility that updates the 'countries' and 'global' tables based on 'users' // // // //////////////////////////////////////////////////////////////////////////////// // Load the AWS SDK for Node.js var AWS = require('aws-sdk'); // Set the region AWS.config.update({region: 'us-east-2'}); // Create DynamoDB service object var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'}); var params = { TableName: "users", ProjectionExpression: "longTermAudioFeatures, country, obscurifyScore" }; var requests = []; var batches = []; var countries = {}; // a country looks like: // key -> country code, ex. "US" // breakdown : [ { score of x : amount of users getting that score }, { } , ...] // averageScore : 180 // userCount : 15,000 // audioFeatureAverages : audioFeatureAverages var globalAverageScore = 0; var globalUserCount = 0; try { ddb.scan(params, onScan); } catch (err) { console.log(err); } async function onScan(err, data) { var count = 0; if (err) { console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2)); } else { console.log("Scan succeeded."); data.Items.forEach(function(user) { if (user.obscurifyScore != undefined) { globalAverageScore += parseInt(user.obscurifyScore.N); globalUserCount += 1; if (user.country.S in countries) { var newUserCount = parseInt(countries[user.country.S].userCount) + 1; var newTotalScore = parseFloat(countries[user.country.S].averageScore) * parseInt(countries[user.country.S].userCount) + parseFloat(user.obscurifyScore.N); var oldAudioFeatureAverages = countries[user.country.S].audioFeatureAverages; var newAudioFeatureAverages = { 'danceability' : { N: ((parseFloat(oldAudioFeatureAverages.danceability.N) * parseInt(countries[user.country.S].userCount) + parseFloat(user.longTermAudioFeatures.M.danceability.N)) / newUserCount).toString() }, 'energy' : { N: ((parseFloat(oldAudioFeatureAverages.energy.N) * parseInt(countries[user.country.S].userCount) + parseFloat(user.longTermAudioFeatures.M.energy.N)) / newUserCount).toString() }, 'happiness' : { N: ((parseFloat(oldAudioFeatureAverages.happiness.N) * parseInt(countries[user.country.S].userCount) + parseFloat(user.longTermAudioFeatures.M.happiness.N)) / newUserCount).toString() }, 'acousticness' : { N: ((parseFloat(oldAudioFeatureAverages.acousticness.N) * parseInt(countries[user.country.S].userCount) + parseFloat(user.longTermAudioFeatures.M.acousticness.N)) / newUserCount).toString() } }; var breakdown = countries[user.country.S].breakdown; var key = user.obscurifyScore.N.toString(); if (key in breakdown) { breakdown[key] = breakdown[key] + 1; } else { breakdown[key] = 1; } countries[user.country.S] = { "code" : user.country.S, "breakdown" : breakdown, "averageScore" : newTotalScore / newUserCount, "userCount" : newUserCount, "audioFeatureAverages" : newAudioFeatureAverages } } else { //new country var breakdown = {}; var key = user.obscurifyScore.N.toString(); breakdown[key] = 1; countries[user.country.S] = { 'code' : user.country.S, 'breakdown' : breakdown, 'averageScore' : user.obscurifyScore.N, 'userCount' : 1, 'audioFeatureAverages' : user.longTermAudioFeatures.M } } } }); // continue scanning if we have more items if (typeof data.LastEvaluatedKey != "undefined") { console.log("Scanning for more..."); params.ExclusiveStartKey = data.LastEvaluatedKey; ddb.scan(params, onScan); } else { let params = { TableName: 'global', Item: { 'planet' : { S: 'earth' }, 'userCount' : { N: globalUserCount.toString() }, 'averageScore' : { N: (globalAverageScore / globalUserCount).toString() } } }; ddb.putItem(params, function(err, data) { if (err) { console.log(err); } else { console.log(data); } }); for (country in countries) { Object.keys(countries[country].breakdown).forEach(function(key) { countries[country].breakdown[key] = { N: countries[country].breakdown[key].toString() }; }); let request = { PutRequest: { Item: { 'code' : { S: countries[country].code }, 'audioFeatureAverages' : { M: countries[country].audioFeatureAverages }, 'averageScore' : { N: countries[country].averageScore.toString() }, 'breakdown' : { M: countries[country].breakdown }, 'userCount' : { N: countries[country].userCount.toString() } } } } requests.push(request); } batches = splitRecordsIntoBatches(requests); const dbResponse = await Promise.all(batches.map(batch => putRecordsIntoDynamo(batch))); } } } function putRecordsIntoDynamo(requests) { return new Promise(async(resolve, reject) => { var dbParams = { RequestItems: { "countries": requests } }; let attemptCount = 0; var processItemsCallback = function(err, data) { if (err) { return reject(err); } else { var params = {}; params.RequestItems = data.UnprocessedItems; if (Object.keys(params.RequestItems).length != 0 && attemptCount < 5) { attemptCount += 1; console.log("attempt #" + attemptCount + ": " + data); ddb.batchWriteItem(params, processItemsCallback); } else { console.log(data); return resolve(data); } } }; ddb.batchWriteItem(dbParams, processItemsCallback); }); } function splitRecordsIntoBatches(records) { let batches = []; while (records.length > 0) { let batch = []; if (records.length > 25) { batch = records.slice(0, 25); records = records.slice(25, records.length); } else { batch = records; records = []; } batches.push(batch); } return batches; } ================================================ FILE: lambda/getObscurifyData.js ================================================ // dependencies var AWS = require('aws-sdk'); // Set the region AWS.config.update({ region: 'us-east-2' }); // Create DynamoDB service object var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' }); exports.handler = function(event, context, callback) { var obscurifyScore = event['queryStringParameters']['obscurifyScore'] || null; var recentObscurifyScore = event['queryStringParameters']['recentObscurifyScore'] || null; var code = event['queryStringParameters']['code'] || null; if (obscurifyScore == null || code == null || recentObscurifyScore == null) { return callback('provide parameters'); } var audioFeatureAverages = { 'danceability' : 0, 'energy' : 0, 'happiness' : 0, 'acousticness' : 0 }; var percentileByCountryAllTime = 0; var percentileByCountryRecent = 0; let params = { TableName: 'countries', Key: { 'code': { S: code } } }; // Call DynamoDB to read the item from the table ddb.getItem(params, function(err, data) { if (err) { console.log("Error on countries read", err); callback(err); } else { console.log("Success", data.Item); if (data.Item == undefined) { percentileByCountryAllTime = null; percentileByCountryRecent = null; //values pulled from obscurify 1.0 global averages audioFeatureAverages.danceability = 0.57; audioFeatureAverages.energy = 0.65; audioFeatureAverages.happiness = 0.45; audioFeatureAverages.acousticness = 0.22; } else { var usersBelowAllTime = 0; var usersBelowRecent = 0; var value; Object.keys(data.Item.breakdown.M).forEach(function(key) { value = data.Item.breakdown.M[key]; if (parseInt(key) < parseInt(obscurifyScore)) { usersBelowAllTime += parseInt(value.N); } if (parseInt(key) < parseInt(recentObscurifyScore)) { usersBelowRecent += parseInt(value.N); } }); var usersAboveAllTime = data.Item.userCount.N - usersBelowAllTime; var usersAboveRecent = data.Item.userCount.N - usersBelowRecent; percentileByCountryAllTime = ( usersAboveAllTime / data.Item.userCount.N ) * 100; percentileByCountryRecent = ( usersAboveRecent / data.Item.userCount.N ) * 100; let globalParams = { TableName: 'global', Key: { 'planet': { S: 'earth' } } }; ddb.getItem(globalParams, function(err2, globalData) { if (err2 || globalData.Item.averageScore == undefined) { console.log("Error on global table get:", err); return callback(null, JSON.stringify({ "percentileByCountryAllTime" : null, "percentileByCountryRecent" : null, "globalAverageScore" : null, "totalUserCount" : null, "userCountByCountry" : null, "audioFeatureAverages" : null, "averageScore" : null, "breakdown" : null })); } else { callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'GET,OPTIONS' }, "body": JSON.stringify({ "percentileByCountryAllTime" : percentileByCountryAllTime, "percentileByCountryRecent" : percentileByCountryRecent, "globalAverageScore" : globalData.Item.averageScore.N, "totalUserCount" : globalData.Item.userCount.N, "userCountByCountry" : data.Item.userCount.N, "audioFeatureAverages" : data.Item.audioFeatureAverages.M, "averageScore" : data.Item.averageScore.N, "breakdown" : data.Item.breakdown.M }), }); } }); } } }); }; ================================================ FILE: lambda/getUserHistory.js ================================================ // dependencies var AWS = require('aws-sdk'); // Set the region AWS.config.update({ region: 'us-east-2' }); // Create DynamoDB service object var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' }); exports.handler = function(event, context, callback) { var userID = event['queryStringParameters']['userID'] || null; var hex = event['queryStringParameters']['hex'] || null; if (userID == undefined || hex == undefined) { callback('supply userID and hex') } //var initialTime = new Date(); var params = { TableName: 'users', Key: { 'userID': { S: userID } }, ProjectionExpression: 'userHistory, hex' }; ddb.getItem(params, function(err, data) { if (err) { console.log("Error on user history read:", err); callback(err); } else { if (data.Item == undefined || data.Item.userHistory == undefined) { callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'GET,OPTIONS' }, "body": JSON.stringify({ "message" : "getUserHistory returned nothing on DB read" }), }); } else if (data.Item.hex.S != hex) { callback("query hex does not match DB hex"); } else { //var difference = (new Date() - initialTime) / 1000; //console.log("DB :: You waited " + difference + " seconds for the get history call"); let formattedHistory = data.Item.userHistory.L; formattedHistory = data.Item.userHistory.L.map(x => x.M); for (let history of formattedHistory) { history.shortTermArtistIDs = history.shortTermArtistIDs.L; history.shortTermArtistIDs = history.shortTermArtistIDs.map(x => x.S); history.shortTermTrackIDs = history.shortTermTrackIDs.L; history.shortTermTrackIDs = history.shortTermTrackIDs.map(x => x.S); history.dayOfYear = history.dayOfYear.N; history.year = history.year.N; history.formattedDate = history.formattedDate.S; } callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'GET,OPTIONS' }, "body": JSON.stringify({ 'userID' : userID, 'userHistory' : formattedHistory }), }); } } }); }; ================================================ FILE: lambda/saveUserHistory.js ================================================ // dependencies var AWS = require('aws-sdk'); var moment = require('moment'); // Set the region AWS.config.update({ region: 'us-east-2' }); // Create DynamoDB service object var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' }); var minDaysBetweenUpdateUser = 28; exports.handler = function(event, context, callback) { var body = JSON.parse(event['body']); var country = body['country'] || null; var userID = body['userID'] || null; var longTermArtistIDs = body['longTermArtistIDs'] || null; var longTermTrackIDs = body['longTermTrackIDs'] || null; var obscurifyScore = body['obscurifyScore'] || null; var longTermAudioFeatures = body['longTermAudioFeatures'] || null; var shortTermArtistIDs = body['shortTermArtistIDs'] || null; var shortTermTrackIDs = body['shortTermTrackIDs'] || null; var hex = body['hex'] || null; if (country == null || longTermArtistIDs == null || longTermTrackIDs == null || obscurifyScore == null || longTermAudioFeatures == null || hex == null) { callback('missing params'); } var historyInstance = { 'shortTermArtistIDs' : shortTermArtistIDs, 'shortTermTrackIDs' : shortTermTrackIDs, 'formattedDate' : moment().format("MMM Do YY"), 'dayOfYear' : moment().dayOfYear(), 'year' : moment().year() }; var userHistory = []; var params = { TableName: 'users', Key: { 'userID': { S: userID } }, ProjectionExpression: 'userHistory, obscurifyScore, longTermAudioFeatures, hex' }; ddb.getItem(params, function(err, data) { if (err) { console.log("Error on users table get:", err); return callback(err) } else if (data.Item.hex == undefined || data.Item.hex.S != hex) { return callback('hex probs') } else { longTermArtistIDs = longTermArtistIDs.map(id => ({"S" : id }) ); longTermTrackIDs = longTermTrackIDs.map(id => ({"S" : id }) ); for (let feature in longTermAudioFeatures) { longTermAudioFeatures[feature] = { "N" : longTermAudioFeatures[feature].toString() }; } var formattedHistory = {}; if ((shortTermArtistIDs == undefined || shortTermArtistIDs.length == 0) || (shortTermTrackIDs == undefined || shortTermTrackIDs.length == 0)) { // } else { shortTermArtistIDs = historyInstance.shortTermArtistIDs.map(id => ({"S" : id }) ); shortTermTrackIDs = historyInstance.shortTermTrackIDs.map(id => ({"S" : id }) ); formattedHistory.shortTermArtistIDs = { "L" : shortTermArtistIDs }; formattedHistory.shortTermTrackIDs = { "L" : shortTermTrackIDs }; formattedHistory.formattedDate = { "S" : historyInstance.formattedDate }; formattedHistory.dayOfYear = { "N" : historyInstance.dayOfYear.toString() }; formattedHistory.year = { "N" : historyInstance.year.toString() }; } if (data.Item == undefined || data.Item.userHistory == undefined || data.Item.userHistory.L == undefined) { //user history not found in DB if (shortTermTrackIDs.length > 0 && formattedHistory.year != undefined) { userHistory.unshift( { "M" : formattedHistory} ); } addOrUpdateUser(userHistory, longTermAudioFeatures, obscurifyScore.toString(), longTermTrackIDs, longTermArtistIDs, country, userID, true, null, null); } else { //existing user userHistory = data.Item.userHistory.L; if (userHistory.length == 0) { if (formattedHistory.year == undefined || formattedHistory.shortTermTrackIDs == undefined) { callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'POST,OPTIONS' }, "body": JSON.stringify({"status" : "ok, no update history still empty"}), }); } else { userHistory.unshift( { "M" : formattedHistory} ); addOrUpdateUser(userHistory, longTermAudioFeatures, obscurifyScore.toString(), longTermTrackIDs, longTermArtistIDs, country, userID, false, data.Item.longTermAudioFeatures.M, data.Item.obscurifyScore.N); } } else if (moment().year() > userHistory[0].M.year.N || (moment().dayOfYear() - userHistory[0].M.dayOfYear.N > minDaysBetweenUpdateUser)) { if (formattedHistory.year != undefined && formattedHistory.shortTermTrackIDs != undefined) { userHistory.unshift( { "M" : formattedHistory} ); } addOrUpdateUser(userHistory, longTermAudioFeatures, obscurifyScore.toString(), longTermTrackIDs, longTermArtistIDs, country, userID, false, data.Item.longTermAudioFeatures.M, data.Item.obscurifyScore.N); } else { callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'POST,OPTIONS' }, "body": JSON.stringify({"status" : "ok, no update because last history is recent"}), }); } } } }); function addOrUpdateUser(userHistory, longTermAudioFeatures, obscurifyScore, longTermTrackIDs, longTermArtistIDs, country, userID, newUserFlag, oldLongTermAudioFeatures, oldObscurifyScore) { let userParams = { TableName: 'users', Item: { 'userID' : { S: userID }, 'hex' : { S: hex }, 'country' : { S: country }, 'longTermArtistIDs' : { L: longTermArtistIDs }, 'longTermTrackIDs' : { L: longTermTrackIDs }, 'obscurifyScore' : { N: obscurifyScore }, 'longTermAudioFeatures' : { M: longTermAudioFeatures }, 'userHistory' : { L: userHistory } } }; ddb.putItem(userParams, function(err, userData) { if (err) { console.log("Error on user table insert:", err); callback(err) } else { //now update the countries table let countryParams = { TableName: 'countries', Key: { 'code' : { S: country } } }; ddb.getItem(countryParams, function(err2, countryData) { if (err2) { console.log("Error on countries table get:", err2); callback(err2) } else { if (countryData.Item == undefined) { addNewCountry(country, longTermAudioFeatures, obscurifyScore); } else { updateCountry(countryData.Item, longTermAudioFeatures, obscurifyScore, newUserFlag, oldLongTermAudioFeatures, oldObscurifyScore); } } }); } }); } function updateCountry(countryData, longTermAudioFeatures, obscurifyScore, newUserFlag, oldLongTermAudioFeatures, oldObscurifyScore) { if (newUserFlag) { let breakdown = countryData.breakdown.M; if (breakdown[obscurifyScore.toString()]) { let newValue = parseInt(breakdown[obscurifyScore.toString()].N) + 1; breakdown[obscurifyScore.toString()] = { N: newValue.toString()}; } else { breakdown[obscurifyScore.toString()] = { N: "1" }; } let oldUserCount = parseInt(countryData.userCount.N); let oldAverageScore = parseFloat(countryData.averageScore.N); let averageScore = ((oldUserCount * oldAverageScore) + parseInt(obscurifyScore)) / (oldUserCount + 1); let userCount = (oldUserCount + 1).toString(); let audioFeatureAverages = countryData.audioFeatureAverages.M; for (let key in audioFeatureAverages) { let oldAudioFeature = parseFloat(audioFeatureAverages[key].N); let audioFeature = ((oldUserCount * oldAudioFeature) + parseFloat(longTermAudioFeatures[key].N)) / (oldUserCount + 1); audioFeatureAverages[key].N = audioFeature.toString(); } let params = { TableName: 'countries', Item: { 'code' : { S: countryData.code.S }, 'audioFeatureAverages' : { M: audioFeatureAverages }, 'averageScore' : { N: averageScore.toString() }, 'breakdown' : { M: breakdown }, 'userCount' : { N: userCount } } }; ddb.putItem(params, function(err, data) { if (err) { console.log("Error on country table update:", err); callback(err) } else { updateGlobalTable(true, obscurifyScore, null); } }); } else { let breakdown = countryData.breakdown.M; if (breakdown[oldObscurifyScore.toString()]) { let newValue = parseInt(breakdown[oldObscurifyScore.toString()].N) - 1; breakdown[oldObscurifyScore.toString()] = { N: newValue.toString()}; } if (breakdown[obscurifyScore.toString()]) { let newValue = parseInt(breakdown[obscurifyScore.toString()].N) + 1; breakdown[obscurifyScore.toString()] = { N: newValue.toString()}; } else { breakdown[obscurifyScore.toString()] = { N: "1" }; } let userCount = parseInt(countryData.userCount.N); let oldAverageScore = parseFloat(countryData.averageScore.N); let averageScore = ((userCount * oldAverageScore) - parseInt(oldObscurifyScore) + parseInt(obscurifyScore)) / userCount; let audioFeatureAverages = countryData.audioFeatureAverages.M; for (let key in audioFeatureAverages) { let oldAudioFeature = parseFloat(audioFeatureAverages[key].N); let audioFeature = ((userCount * oldAudioFeature) + parseFloat(longTermAudioFeatures[key].N) - parseFloat(oldLongTermAudioFeatures[key].N)) / userCount; audioFeatureAverages[key].N = audioFeature.toString(); } let params = { TableName: 'countries', Item: { 'code' : { S: countryData.code.S }, 'audioFeatureAverages' : { M: audioFeatureAverages }, 'averageScore' : { N: averageScore.toString() }, 'breakdown' : { M: breakdown }, 'userCount' : { N: userCount.toString() } } }; ddb.putItem(params, function(err, data) { if (err) { console.log("Error on country table update:", err); callback(err) } else { updateGlobalTable(false, obscurifyScore, oldObscurifyScore); } }); } } function addNewCountry(country, longTermAudioFeatures, obscurifyScore) { let breakdown = {}; breakdown[obscurifyScore.toString()] = { N: "1" }; if (longTermAudioFeatures["tracksCounted"]) { delete longTermAudioFeatures["tracksCounted"]; } let params = { TableName: 'countries', Item: { 'code' : { S: country }, 'audioFeatureAverages' : { M: longTermAudioFeatures }, 'averageScore' : { N: obscurifyScore }, 'breakdown' : { M: breakdown }, 'userCount' : { N: "1" } } }; ddb.putItem(params, function(err, data) { if (err) { console.log("Error on country table insert:", err); callback(err) } else { updateGlobalTable(true, obscurifyScore, null); } }); } function updateGlobalTable(newUserFlag, obscurifyScore, oldObscurifyScore) { let params = { TableName: 'global', Key: { 'planet' : { S: 'earth' } } }; ddb.getItem(params, function(err, data) { if (err) { console.log("Error on global table get:", err); callback(err) } else { if (data.Item == undefined) { let globalParams = { TableName: 'global', Item: { 'planet' : { S: 'earth' }, 'userCount' : { N: '1' }, 'averageScore' : { N: obscurifyScore.toString() } } }; ddb.putItem(globalParams, function(err2, globalData) { if (err2) { console.log("Error on global table insert:", err2); callback(err2) } else { callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'POST,OPTIONS' }, "body": JSON.stringify({"status" : "all clear -- fresh global table began"}), }); } }); } else { let averageScore = parseFloat(data.Item.averageScore.N); let userCount = parseInt(data.Item.userCount.N); if (newUserFlag && oldObscurifyScore == null) { averageScore = ((userCount * averageScore) + parseInt(obscurifyScore)) / (userCount + 1); userCount += 1; } else { averageScore = ((userCount * averageScore) - parseInt(oldObscurifyScore) + parseInt(obscurifyScore)) / userCount; } let globalParams = { TableName: 'global', Item: { 'planet' : { S: 'earth' }, 'userCount' : { N: userCount.toString() }, 'averageScore' : { N: averageScore.toString() } } }; ddb.putItem(globalParams, function(err2, globalData) { if (err2) { console.log("Error on global table insert:", err2); callback(err2) } else { callback(null, { "statusCode": 200, "headers": { "X-Requested-With": '*', "Access-Control-Allow-Headers": 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with', "Access-Control-Allow-Origin": '*', "Access-Control-Allow-Methods": 'POST,OPTIONS' }, "body": JSON.stringify({"status" : newUserFlag ? "all clear - new user added" : "all clear - user updated"}), }); } }); } } }); } }; ================================================ FILE: lambda/spotifyCallback.js ================================================ const axios = require("axios"); const querystring = require('querystring'); var crypto = require('crypto'); var AWS = require('aws-sdk'); AWS.config.update({ region: 'us-east-2' }); // Create DynamoDB service object var ddb = new AWS.DynamoDB({ apiVersion: '2012-08-10' }); var redirect_uri = process.env.redirect_uri; var client_id = process.env.client_id; var client_secret = process.env.client_secret; module.exports.handler = (event, context, callback) => { var code = event['queryStringParameters']['code'] || null; var state = event['queryStringParameters']['state'] || null; const headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Basic ' + (new Buffer.from(client_id + ':' + client_secret).toString('base64')) } axios.post('https://accounts.spotify.com/api/token?grant_type=authorization_code&code=' + code + '&redirect_uri=' + redirect_uri, querystring.stringify({}), { headers: headers }) .then(function(response) { const headers2 = { 'Accept' : 'application/json', 'Authorization': 'Bearer ' + response.data.access_token } axios.get("https://api.spotify.com/v1/me", { headers: headers2 }) .then(function(response2) { let userID = response2.data.id; var params = { TableName: 'users', Key: { 'userID': { S: userID } }, ProjectionExpression: 'userHistory, hex' }; ddb.getItem(params, function(err, data) { if (err) { console.log("Error on user history read:", err); callback(err); } else { if (data.Item != undefined && data.Item.hex != undefined && data.Item.hex.S.length > 0) { callback(null, { statusCode: 301, headers: { Location: process.env.callback_uri + '?spotifyToken=' + response.data.access_token + '&obscurifyToken=' + data.Item.hex.S }, }); } else { // insert new user to dynamo with a hex key let hex = crypto.randomBytes(20).toString('hex'); let userParams = { TableName: 'users', Item: { 'userID' : { S: userID }, 'hex' : { S: hex } } }; ddb.putItem(userParams, function(err, userData) { if (err) { console.log("Error on user table insert for adding hex:", err); callback(err) } else { callback(null, { statusCode: 301, headers: { Location: process.env.callback_uri + '?spotifyToken=' + response.data.access_token + '&obscurifyToken=' + hex }, }); } }); } } }); }) .catch(function(err) { console.error("Error: " + err); callback(err); }); }) .catch(function(err) { console.error("Error: " + err); callback(err); }); };