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